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

时间:2013-11-04 10:22:19

标签: 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 ;\
                                     }}\

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

4 个答案:

答案 0 :(得分:13)

这是一个续行字符。

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

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

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

答案 1 :(得分:8)

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

答案 2 :(得分:7)

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

BTW - 继续线在预处理器传递中被“胶合”。

请阅读第3步:gcc docs

摘录:

 /\
 *
 */ # /*
 */ defi\
 ne FO\
 O 10\
 20

相当于:

#define FOO 1020

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

f\
lo\
at f = 5.0; 

与:

相同
float f = 5.0;

答案 3 :(得分:3)

这意味着define语句会超过一行。