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

Vik*_*tor 11 c++ standards newline

我指的是:为什么文本文件以换行符结尾? 其中一个答案引用了C89标准.这简单地说明文件必须以新行结束,而新行不会立即以反斜杠开头.

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

#include <iostream>
using namespace std;

int main()
{
  cout << "Hello World!" << endl;
  return 0;
}
//\
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*exD 7

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

实际上,C(N1570)标准说:

\删除反斜杠字符()后面紧跟一个新行字符的每个实例,拼接物理源代码行以形成逻辑源代码行.只有任何物理源线上的最后反斜杠才有资格成为此类拼接的一部分.非空的源文件应以换行符结尾,在进行任何此类拼接之前,该换行符不应立即以反斜杠字符开头.

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

\删除反斜杠字符()后面紧跟一个新行字符的每个实例,拼接物理源代码行以形成逻辑源代码行.只有任何物理源线上的最后反斜杠才有资格成为此类拼接的一部分.因此,如果生成与通用字符名称的语法匹配的字符序列,则行为未定义.一个非空的并且不以换行符结尾的源文件,或者在任何此类拼接发生之前以反斜杠字符开头的新行字符结尾的源文件,应该被处理,就像另一个新文件一样 - 行字符被附加到文件中.