源文件翻译的第二阶段?

时间:2018-01-22 17:23:35

标签: c++

我目前正在阅读article,我无法理解第2阶段。

  

每当反斜杠出现在一行的末尾时(紧接着   通过换行符,删除反斜杠和换行符,   将两条物理源线组合成一条逻辑源线。

我知道换行符后面的反斜杠可以出现在引号内,但第2阶段的解释就像换行符可以单独出现一样,如

int var = 2; \n

特别是第2部分:

  

如果非空源文件没有以换行符结尾   在此步骤之后(最初是否没有换行,或者它已结束   使用反斜杠),行为未定义(直到C ++ 11)a   添加了终止换行符(从C ++ 11开始)。

“如果源文件结束并带有换行符”?再次,听起来像换行符可能出现在某种字符串之外 - 它们是什么意思?如果文件始终被引号包围,文件如何以换行符结束?

1 个答案:

答案 0 :(得分:4)

\n 在引用的字符串文字内表示换行符。 \n本身不是新行字符。新行字符是字节0x0A(换行符,由Linux使用)或0x0D(回车,由Mac使用)(请参阅ASCII表)。在Windows上,两个字节都表示一个新的行字符(一个回车符后跟一个换行符,通常称为CRLF)。

在键盘上按Enter键时,会在源代码中插入换行符。 \n仅仅是所谓的转义序列。当角色无法直接合法地写入字符串文字时,它是一种在字符串文字中表示字符的方法。