这段代码的含义是什么?特别是反斜杠 '\' 的含义是什么?
s23_foo += \
s8_foo * s16_bar;
我添加了数据类型,因为它们可能是相关的。 感谢您的帮助。
在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++中,大部分情况下空格并不重要,因此在这个例子中,行续行符是不需要的。代码可以正常编译:
在C++中,大部分情况下空格并不重要,因此在这个例子中,行续行符是不需要的。代码可以正常编译:
s23_foo +=
s8_foo * s16_bar;
实际上,当您有一长串术语需要分页时,它可以很有用。
由于预处理器将处理#define
直到遇到换行符为止,因此在宏定义中使用行连接最为有用。例如:
#define FOO() \
s23_foo += \
s8_foo * s16_bar;
没有连续行字符,FOO
将会为空。
在引号字符串内,反斜杠被用作分隔符来开始一个由两个字符组成的转义序列。例如:
"hello\n"
在这个字符串字面值中,\
开始了一个转义序列,其转义码为 n
。使用 \n
会在字符串中嵌入一个换行符。当然,这也意味着如果你想让字符串包含 \
字符,你也必须对其进行转义:"hello\\there"
屏幕上显示的字符串结果为:
hello\there
各种转义序列的文档可以在这里找到。
这使你能够将一个语句延续到下一行——通常你只需要在 #define 宏块内使用它。
//
зҡ„жіЁйҮҠи·Ёи¶ҠеӨҡиЎҢгҖӮ :P - Simples23_foo += s8_foo * s16_bar;
一样阅读。你也可以使用一些独特的代码
cout<<"\a";
cout<<"\t";
cout<<"\n";
\(反斜杠)
只是一个续行符。 - bim
代码;//注释\<换行>注释继续<换行>代码;
- zwhconst