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

mas*_*mic 13 c c++

在宏声明中,如:

#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 ;\
                                     }}\
Run Code Online (Sandbox Code Playgroud)

这些反斜杠(\)的含义是什么?

Bat*_*eba 13

这是一个线条延续的角色.

之后应该没有别的东西(除了行尾字符),包括空格.

它对宏特别有用,因为它增加了清晰度.

(非常,非常偶尔 - 特别是在旧代码中 - 你会看到三角形序列 ??/代替\.这些天虽然它更像是一个采访者的技巧问题.)


Arn*_*rtz 12

斜杠用于使以下行结束为预处理器的非换行符.A #define必须是预处理器的一行.为了增强可读性,您可以在行尾之前使用反斜杠.预处理器将首先擦除前面带有反斜杠的任何换行符,并且只有在解析之后才会擦除#define.因此,当您看到多行时,PP只能看到一行.


Art*_*tur 7

这就是所谓的续行.这意味着您的生产线将继续排在后面.如果以这种方式编写,有时读取内容会更容易.

顺便说一句 - 继续线在预处理器通过时"粘合".

在此处阅读第3步:gcc docs

摘抄:

 /\
 *
 */ # /*
 */ defi\
 ne FO\
 O 10\
 20
Run Code Online (Sandbox Code Playgroud)

相当于:

#define FOO 1020
Run Code Online (Sandbox Code Playgroud)

值得注意的是,不必在预处理器宏中使用连续的行.这是完全合法的顶级写:

f\
lo\
at f = 5.0; 
Run Code Online (Sandbox Code Playgroud)

这与:

float f = 5.0;
Run Code Online (Sandbox Code Playgroud)