我有两个函数:
void foo0(int bar);
void foo1(int bar);
我不希望能够创建一个宏 QUX
来扩展到基于另一个宏 BAZ
的这些函数名称。我尝试了以下方法:
#define BAZ 0
#define QUX(x) foo##BAZ(x)
但是它没有工作,因为生成的函数是 fooBAZ()
。我怎样才能让它生成 foo0()
?
最佳答案
#define CAT_I(a,b) a##b
#define CAT(a,b) CAT_I(a, b)
#define QUX(x) CAT(foo, BAZ) ## (x)
关于c - 在 C 中使用宏生成带字符串的函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17699443/