''是什么?在#define语句的末尾是什么意思?

时间:2014-05-25 14:25:51

标签: c++

我看到了这段代码:

#define REPEAT(statement) \
{ \
    while((count & ~0x7) && ((x+8) < width)) \
        UNROLL8( statement; count--; x++; ); \
    \
    while((count > 0) && (x < width)) \
    { \
        statement; \
        count--; \
        x++; \
    } \
}

这里的\是什么?

4 个答案:

答案 0 :(得分:4)

宏的定义仅包括逻辑单行。宏定义每行末尾的\用于允许将宏定义拆分为多个物理源行(可能出于可读性原因)。

这是有效的,因为在翻译的第二阶段删除后跟新行的\,但预处理器在第四阶段中稍后运行。 [lex.phases]/2

  

删除后跟新行字符的反斜杠字符(\)的每个实例,拼接物理源代码行以形成逻辑源代码行。

答案 1 :(得分:3)

在宏定义中,\表示 continuation

宏的定义应该在一行上,即没有任何中断。因为在你的定义中,宏定义是如此之大,以至于它不能在不破坏可读性的情况下方便地容纳在同一行上。因此,\用于向预处理器指示继续到下一行的定义,以便保持程序的可读性。

请注意,\必须后跟换行符。确保\之后没有空格。

答案 2 :(得分:1)

这些是将整个#define事物解释为一行所必需的行继续,这是预处理器语法所要求的。通过这种方式,它更具可读性。

答案 3 :(得分:1)

这意味着在实际的换行符后,宏文本会继续。

#define从一条有条不紊的路线读取其内容。只有&#39; \字符会逃脱&#39; (即跳过)以下换行符。