打开支架后反斜杠是什么意思?

在宏声明中,如:

#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语句遍历多行。