#define 语句末尾的"\"是什么意思?
What does the '' at the end of a #define statement mean?
我看到了下面的代码:
#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
从连续的一行读取其内容。字符只是'转义'(即跳过)下面的换行符。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思