【发布时间】:2015-10-13 00:27:57
【问题描述】:
我指的是:Why should text files end with a newline? 其中一个答案引用了 C89 标准。简而言之,文件必须以新行结尾,而不是紧跟反斜杠。
这是否适用于最新的 C++ 标准?
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
//\
以上内容有效吗? (假设//\后面有一个换行符,我一直无法显示)
【问题讨论】:
-
“为了保持一致性,遵循这条规则非常有帮助”。 Historically,主要问题是未能在带有#endif 标头保护的 .h 文件后添加换行符。
-
为什么不自己测试一下?
-
@Jashaszun 嗯,如果我碰巧有一个允许文件以换行符结尾的编译器怎么办?尝试编译并不能证明任何事情。
-
@Jashaszun:标准的一般经验法则是“对你接受的东西松懈。严格遵守你产生的东西”。因此,在没有歧义的情况下接受不合规输入的编译器不会做“坏工作”。尽管理想情况下它应该警告它接受的任何非标准内容。
-
@Jashaszun 嗯。 . .这应该是一个弱假设。在大多数情况下,我可以假设如果有错误,是我造成的,而不是编译器。但是,我认为没有一个编译器能够 100% 遵守该标准。