C ++标准(源文件的换行结束)

时间:2015-07-22 22:05:47

标签: c++ newline standards

我指的是:Why should text files end with a newline? 其中一个答案引用了C89标准。这简单地说明一个文件必须以一个新行结束,而这一行不会立即以反斜杠开头。

这适用于最新的C ++标准吗?

#include <iostream>
using namespace std;

int main()
{
  cout << "Hello World!" << endl;
  return 0;
}
//\

以上是否有效? (假设//后面有换行符,我无法显示)

1 个答案:

答案 0 :(得分:7)

给定的代码在C ++的情况下是合法的,但不适用于C。

确实,C(N1570)标准说:

  

反斜杠字符(\)的每个实例后面紧跟一个换行符   删除字符,拼接物理源行以形成逻辑源行。   只有任何物理源代码行的最后反斜杠才有资格成为其中一部分   这种拼接。非空的源文件应以换行符结尾,   在任何此类之前不得立即使用反斜杠字符   拼接发生。

C ++标准(N3797)对它的描述有点不同(强调我的):

  

删除后跟新行字符的反斜杠字符(\)的每个实例,   拼接物理源线以形成逻辑源线。任何物理上只有最后一个反斜杠   源线应有资格成为此类拼接的一部分。因此,如果是一个字符序列那么   匹配生成通用字符名称的语法,行为未定义。 源文件   这不是空的,不会以换行符结尾,也不会以换行符结尾   在进行任何此类拼接之前,应立即使用反斜杠字符进行处理   好像在文件中附加了一个额外的换行符。