c++ - 我可以将整型变量附加到宏定义的函数吗?

标签 c++

我想使用宏将整数变量附加到函数名称,但以下代码不起作用:

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

相关文章:

c++ - 在执行时加载常量,一次还是两次?

c++ - 如何创建过滤 vector 的迭代器?

c++ - 最佳编程实践,C++ header 和包含

c++ - 在 C++ 中定义类型转换运算符模板的正确方法是什么

c++ - 舍入误差检测

c++ - 重载比较运算符 == C++

c++ - 窄转换编译警告。如何解决?

C++ 生成器 [C++ 错误] sysmac.h(58) : E2040 Declaration terminated incorrectly

c++ - C - 如何将文件的 gzip block 解压缩到内存缓冲区中

c++ - 如何在 C++ 中的 while 循环中存储先前的迭代?