所以我在用于 RF 通信的 C 库中遇到了以下代码:
#define __COMB(a,b,c) (a##b##c)
#define _COMB(a,b,c) __COMB(a,b,c)
主要用于为常量和函数创建各种名称。它只是连接参数。
我不明白的是第二行。是否有理由包装宏? 如果这只是一个命名问题,为什么不直接写:
#define _COMB(a,b,c) (a##b##c)
图书馆可以找到here .
提前致谢!
最佳答案
这是一种欺骗 C 预处理器在连接参数之前预扩展参数的技巧。在某些情况下需要这种解耦,例如,如果要在预处理器宏参数字符串化中使用 __COMB
。
关于C 宏包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24261995/