#define 语句末尾的"\"是什么意思?

What does the '' at the end of a #define statement mean?

本文关键字:是什么 意思 语句 #define      更新时间:2023-10-16

我看到了下面的代码:

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

这里的是什么?

宏的定义只包含一个逻辑单行。宏定义每行末尾的用于将宏定义拆分为多个物理源行(可能是出于可读性原因)。

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

删除紧跟在新行字符后面的反斜杠字符()的每个实例,将物理源行拼接成逻辑源行。

在宏定义中,表示延续

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

注意后面必须跟一个换行符。确保后面没有空格。

这些是按照预处理器语法的要求,将整个#define解释为一行所必需的行延续。

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

#define从连续的一行读取其内容。字符只是'转义'(即跳过)下面的换行符。