我已经完成了宏的概念,但从未遇到过
#define reg_add_cfghwmod_beacon_led_control(a,b) \
_reg_add_cfghwmod_beacon_led_control(a)
这种语法可以解释我上面的宏意味着什么。
答案 0 :(得分:1)
这是一个多线MACRO。
关于尾随\
,如果您看到#define
指令的语法,C11
标准,章节§6.10,它说,
# define identifier replacement-list new-line
因此,换行符结束替换列表并有效地终止指令。因此,为了具有#define
指令的多行定义,\
用于转义换行符并将后续行的语句作为相同MACRO的替换列表的一部分。< / p>
b
的丢失,取决于编码逻辑。也许尝试回退到只有一个参数的某些早期版本的API。纯粹的猜测
TL; DR; 它只是替换文本(可能是函数调用)
reg_add_cfghwmod_beacon_led_control(a,b)
与
_reg_add_cfghwmod_beacon_led_control(a)
答案 1 :(得分:1)
正如Sourav Ghosh所说,它是一个多线宏(最后是\
)。此外,它有点不自然,因为它的作用是忽略第二个参数。替换不考虑b
参数。否则,它就像任何其他宏一样。