这段代码是什么:(特别是反斜杠'\'是什么?)
s23_foo += \
s8_foo * s16_bar;
Run Code Online (Sandbox Code Playgroud)
我添加了数据类型,因为它们可能是相关的.谢谢你的帮助.
Joh*_*ing 30
反斜杠在C++中表示两种不同的东西,具体取决于上下文.
在引号字符串之外(见下文),a \用作行继续符.预处理器实际上忽略了在行尾(不可见)后面的换行符,并将以下行附加到当前行.
所以:
s23_foo += \
s8_foo * s16_bar;
Run Code Online (Sandbox Code Playgroud)
被解析为:
s23_foo += s8_foo * s16_bar;
Run Code Online (Sandbox Code Playgroud)
线路延续可以串在一起.这个:
s23_foo += \
s8_foo * \
s16_bar;
Run Code Online (Sandbox Code Playgroud)
变成这样:
s23_foo += s8_foo * s16_bar;
Run Code Online (Sandbox Code Playgroud)
在C++中,空格在大多数情况下都是无关紧要的,因此在这个特定的例子中不需要行继续.这应该编译得很好:
s23_foo +=
s8_foo * s16_bar;
Run Code Online (Sandbox Code Playgroud)
事实上,当您有一长串术语时,可以帮助对代码进行分页.
由于预处理器处理a #define直到达到换行符,因此行连续在宏定义中最有用.例如:
#define FOO() \
s23_foo += \
s8_foo * s16_bar;
Run Code Online (Sandbox Code Playgroud)
没有行延续字符,FOO这里将是空的.
在引号字符串中,反斜杠用作分隔符以开始2个字符的转义序列.例如:
"hello\n"
Run Code Online (Sandbox Code Playgroud)
在此字符串文字中,\开始转义序列,转义码为n. \n导致在换行符中嵌入换行符.这当然意味着如果你想要一个字符串来包含这个\角色,你也必须逃避它:
"hello\\there"
Run Code Online (Sandbox Code Playgroud)
结果在屏幕上查看字符串:
你好
各种转义序列都记录在这里.
| 归档时间: |
|
| 查看次数: |
19843 次 |
| 最近记录: |