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()