有没有办法通过使用运算符## 和变量值来“生成”函数名称。例如:
#define FUN_I(fun, fun_id) fun##fun_id
#define FUN(fun, fun_id) RECV_CB_FUN_I(fun, fun_id)
int foo0(int x) {
// do something
}
int main()
{
int i = 0;
FUN(foo,i)(1);
}
宏 FUN
生成 fooi
。有没有办法以某种方式获取 foo0
,或者在这种情况下我必须使用实际数字 0,例如 FUN(foo, 0)(1);
干杯
最佳答案
您必须使用实际的 0(或其他宏)。宏扩展在编译时由 C 预处理器处理。它对变量的运行时值一无所知。
关于c - 预处理器##运算符和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55103493/