C语言宏连接##问题
有一组执行类似功能的函数 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()