C宏包装

par*_*kos 2 c macros c-preprocessor

所以我在C库中遇到了以下用于RF通信的代码:

#define __COMB(a,b,c) (a##b##c)
#define _COMB(a,b,c) __COMB(a,b,c)
Run Code Online (Sandbox Code Playgroud)

这基本上用于为常量和函数创建各种名称.它只是连接参数.

我没有得到的是第二行.是否有理由包装宏?如果这只是一个命名问题,为什么不写:

#define _COMB(a,b,c) (a##b##c)
Run Code Online (Sandbox Code Playgroud)

图书馆可以在这里找到.

提前致谢!

dat*_*olf 5

这是一个技巧,可以欺骗C预处理器在连接之前预先扩展参数.在某些情况下需要这种解耦,例如,如果__COMB要在预处理器宏参数字符串化中使用.