宏语法混乱
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
参数。否则,它与任何其他宏一样。
我已经了解了宏的概念,但从未遇到过
#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
参数。否则,它与任何其他宏一样。