C 宏包装

标签 c macros c-preprocessor

所以我在用于 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/

相关文章:

c - 进程 Hook 问题

c - C中通过JTAG读取STM32L4闪存

function - 宏参数是函数吗?

macros - 方案自引用 lambda 宏

c - 在 typename 中插入注释会报错

c - 重新定义;先前的定义是 'typedef' 错误

python - 这是(Python)脚本的安全suid/功能包装器吗?

c++ - 如何实现类似于 Microsoft Excel 的 "record macro"类功能?

ios - 如何将对象放置在#define语句中

c - '#' 在 C 中到底做什么?