如何与C预处理器连接两次并展开宏(如“arg#宏”中的宏)?
我正试图编写一个程序,其中某些函数的名称依赖于某个宏变量的值,其宏如下所示:
#define VARIABLE 3#define NAME(fun) fun ## _ ## VARIABLEint NAME(some_function)(int a);
不幸的是,宏NAME()把它变成
NAME()
int some_function_VARIABLE(int a);
而不是
int some_function_3(int a);
因此,这显然是错误的做法。幸运的是,变量的不同可能值的数目很小,所以我可以简单地做一个#if VARIABLE == n并分别列出所有案例,但我想知道是否有一个聪明的方法来做到这一点。
#if VARIABLE == n
临摹微笑
30秒到达战场
相关分类