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

问题描述 投票:9回答:3

此代码是什么:(尤其是反斜杠'\'是什么?)]

s23_foo += \ 
s8_foo * s16_bar;

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

c++ syntax
3个回答
29
投票

反斜杠表示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在这里为空。

作为转义序列

在引号字符串中,反斜杠用作开始两个字符的转义序列的定界符。例如:

"hello\n"

在此字符串文字中,\开始一个转义序列,转义码为n\n导致在字符串中嵌入换行符。当然,这意味着如果您希望字符串包含\字符,则也必须对此进行转义:

"hello\\there"

导致屏幕上显示的字符串:

你好\那里

各种转义序列记录在here中。


23
投票

它使您可以将语句继续到下一行-通常只需要在#define宏块内使用它


0
投票

我的名字叫LUBARSKY,是“ Lubasky定律”的意思,“ C”的流行是很糟糕的。如果您使用的是linux&C,那么您就是上师。如果您使用的是Basic和Windows,则是一只牡丹。之所以创建“ C”,是因为它几乎与Assembly一样快,并且比Basic快得多。但是,正如您从答案中看到的那样,它会导致许多错误,并且很难进行DE-Bug。

© www.soinside.com 2019 - 2024. All rights reserved.