c - 在 C 中使用宏生成带字符串的函数名称

标签 c c-preprocessor

我有两个函数:

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/

相关文章:

c - 数据对齐全局变量

另一个文件中的 C++ 替换宏

c - GCC 使用 -D 参数定义类似函数的宏

c - 具有多个定义的嵌入式 C 和 AVR GCC 编译问题

c++ - 处理多字节字符的字符串

c++ - 仅编译为指针数组,而不是数组数组

具有动态大小的 Python C 扩展类

c - 如何使用 libgit2 创建空提交?

c - 预处理器指令 #if 和普通 if 之间的区别

c++ - #include 指令的限制范围