C语言宏连接##问题

C语言宏连接##问题

举报|  2013-10-29 16:34 444769086  |  浏览 418 次
有一组执行类似功能的函数 func1, func2, func3.
定义一个宏 FUNC_NUM,表示在程序中具体选择哪一个函数。
再定义一个宏FUNC替代新函数名,在程序中仅使用 FUNC。
要实现的效果是根据FUNC_NUM不同,FUNC编译后表示的函数不同。
如:
void func1(void);
void func2(void);
void func3(void);
#define FUNC_NUM    (2)
#define FUNC()           func##FUNC_NUM()

若FUNC_NUM为1,则FUNC()为func1();
若FUNC_NUM为2,则FUNC()为func2();

现在的问题是预处理后的结果 FUNC 成了 funcFUNC_NUM.

有哪位大侠能给出解决的办法。
我有更好的答案
2013-10-29 17:54 提问者采纳
#define FUNC_NUM                2
   #define FUNC3(x, y)             x##y
   #define FUNC2(x,y)              FUNC3(x,y)
   #define FUNC                    FUNC2(func, FUNC_NUM)
 
FUNC()会被转换成func2()
提问者评价
特别感谢
评论  |  0  1

paniarch | 来自团队:c编程高手 | 六级 采纳率55%

擅长: C/C++

为您推荐:

按默认排序 | 按时间排序

其他1条回答

2013-10-29 17:15 410588896  | 四级
把#define FUNC() func##FUNC_NUM()改为#define FUNC() ##FUNC_NUM()试试
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值