C/C++语言中内容完全相同的多个函数,使用宏函数的写法

假设有这样一个需求:一个项目需要250个函数,但这些函数体内容完全相同,仅函数名不同,例如Func0、Func1、Func2...等等,这样的要求怎么实现呢?(先不要问有没有如此变态的需求)


当然可以使用手工先写Func0函数体,再写Func1函数体,....,一直写到函数体Func250。假设写完了后,项目需求有变,函数体内有变化,还要从头开始一个一个改.....!!!


如何使用宏函数实现这个需求?(先写3个吧)


//这里是宏函数定义
//	这种函数定义基本覆盖了所有的函数类型,
//	有参数,有返回值
#define FUNC(n)		\
int Func##n(int a, int b)\
{\
	return a+b;\
}


//这里开始“实现”每一个函数体
//	将产生函数名为Func0、Func1、Func2的函数体
FUNC(0)
FUNC(1)
FUNC(2)
//FUNC(3)
//FUNC(n)
//自己往下接着写吧.....


//再加深一步,使用函数指针数组引用这些函数
//	因为已经定义了几个函数名,反正使用时一定是函数指针数组访问
int (*fnFunc[2])(int, int) = 
{
	Func0,
	Func1,
	Func2,
//	Func3,
}


//主函数
void main()
{
	//① 访问方式1
	int x = Func0(24, 15);

	//② 访问方式2
	for (int i=0; i<3; i++)
	{
		int y = fnFunc[i](12, 88);
	}
}

使用VC编译该程序,成功编译后,可以查看宏展开文件。方法是:在【项目】--【设置】--【C++】底下的选项中添加“/P”(大写),编译时可以得到一个.i的宏展开文件:

int Func0(int a, int b){ return a+b;}
int Func1(int a, int b){ return a+b;}
int Func2(int a, int b){ return a+b;}

int (*fnFunc[2])(int, int) = 
{
	Func0,
	Func1,
	Func2,

}


void main()
{
	int x = Func0(24, 15);
	
	for (int i=0; i<3; i++)
	{
		int y = fnFunc[i](12, 88);
	}
}


这样的使用需求会碰到的:一个项目创建了N个线程,每个线程访问相同的一个回调函数,并传递进入相同的参数,但是这个回调函数不能只写一个,应该是一个线程对应一个回调函数,就是这样一个问题。





评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值