C ++中的反斜杠是什么意思?

时间:2013-10-16 13:47:44

标签: c++ syntax

这段代码是什么:(特别是反斜杠'\'是什么?)

s23_foo += \ 
s8_foo * s16_bar;

我添加了数据类型,因为它们可能是相关的。 谢谢你的帮助。

2 个答案:

答案 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宏块中