您的位置:首页 > 编程语言 > C语言/C++

C语言宏连接##问题

2016-04-17 23:19 239 查看


C语言宏连接##问题

举报|  分享| 2013-10-29
16:34444769086 | 浏览
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

#2016年高质量新标准全面升级!#

提问者采纳

#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++


其他类似问题

2008-07-19C语言
宏题目1

2009-01-01C语言里宏的问题

2014-11-14C语言
宏连接符 ## 的问题

2007-06-04C语言宏问题9

2009-03-26C语言宏的问题1

更多关于c
连接宏的问题>>


为您推荐:

按默认排序 | 按时间排序


其他1条回答

2013-10-29 17:15410588896 | 四级

把#define FUNC() func##FUNC_NUM()改为#define FUNC() ##FUNC_NUM()试试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: