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