宏语法混乱

Macro Syntax Confusion

我已经了解了宏的概念,但从未遇到过

#define reg_add_cfghwmod_beacon_led_control(a,b) \
_reg_add_cfghwmod_beacon_led_control(a)

这种语法谁能解释一下上面的宏是什么意思

这是一个多行宏。

  • 关于尾随 \,如果您看到 #define 指令的语法,C11 标准,第 §6.10 章,它说,

    # define identifier replacement-list new-line
    

因此,newline 结束了 replacement-list 并有效地结束了指令。因此,要对 #define 指令进行多行定义,\ 用于转义换行符并将下一行的语句作为同一 MACRO 替换列表的一部分。

  • 关于MACRO定义中b的丢失,

取决于编码逻辑。也许是 回退 到只有一个参数的 API 的某个早期版本的尝试。纯属猜测

TL;DR;它所做的只是替换文本(可能是函数调用)

reg_add_cfghwmod_beacon_led_control(a,b)

_reg_add_cfghwmod_beacon_led_control(a)

正如 Sourav Ghosh 上面所说,它是一个多行宏(末尾的 \)。此外,它有点不自然,因为它所做的是忽略第二个参数。替换不考虑 b 参数。否则,它与任何其他宏一样。