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

新手上路,请多包涵

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

 s23_foo += \
s8_foo * s16_bar;

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

原文由 Christian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 854
2 个回答

反斜杠在 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"

生成在屏幕上查看的字符串:

你好

此处 记录了各种转义序列。

原文由 John Dibling 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 benjymous 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题