打开支架后反斜杠是什么意思?
在宏声明中,如:
#define WAIT_SPI2_TRANSMISSON_END() {while ((SPI2_SR & SPI_SR_TXCTR_MASK) != 0) {\ if( SPI2_SR & SPI_SR_RFDF_MASK ) {\ (void)SPI2_POPR;\ SPI2_SR |= SPI_SR_RFDF_MASK ;\ }}\
这些反斜杠( \
)的含义是什么?
这是一个线条延续的角色。
之后应该没有别的东西(除了行尾字符),包括空格。
它对宏来说特别有用,因为它增加了清晰度。
(非常非常偶尔 – 特别是在旧代码中 – 你会看到三字符序列 ??/
代替\
。这些天虽然它更像是一个采访者的技巧问题。)
斜杠用于使以下行结束为预处理器的非换行符。 #define
必须恰好是预处理器的一行。 为了增强可读性,您可以在行结束前使用反斜杠。 预处理器将首先擦除任何前面带有反斜杠的换行符,然后才解析#define
。 因此,当您看到多行时,PP只看到一行。
这就是所谓的续行。 这意味着您的生产线将继续排在后面。 如果以这种方式编写,有时读取内容会更容易。
顺便说一下 – 继续线在预处理器通过时“胶合”。
在这里阅读第3步: gcc docs
摘抄:
/\ * */ # /* */ defi\ ne FO\ O 10\ 20
相当于:
#define FOO 1020
值得注意的是,不必在预处理器宏中使用连续的行。 完全合法的顶级写道:
f\ lo\ at f = 5.0;
这与:
float f = 5.0;
这意味着define语句遍历多行。