我想使用宏将整数变量附加到函数名称,但以下代码不起作用:
#define TEST(num) test_##num()
void test_0(void){ /* some code here*/ }
void somefunc(){
int somevar = 0;
TEST(somevar);
}
这最终会调用 test_somevar()。
我知道你可以创建一个数字枚举并使用该列表,但我不想这样做,因为它有点违背了我想要做的事情的目的。
有没有办法有效地做到这一点?
最佳答案
预处理器无法使用/查看运行时值,但您可以使用函数数组来执行此操作:
int main(int argc, char *argv[]) {
void (*test[1])(void) = { test_0 };
test[0]();
return 0;
}
或者,给定数组,您可以定义一个宏:
#define TEST(x) test[x]()
关于c++ - 我可以将整型变量附加到宏定义的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23468479/