在某些C++编译器中,下面的警告是什么原因?
No newline at end of file
为什么在源文件/头文件的末尾应该有一个空行?
不完全是因为这个原因,但是如果您使用cx1〔0〕文件,并且它没有尾随新行,因为新的shell提示将出现在文件的最后一行之后(即,不在第0列中),这会非常烦人。
@因为这个原因,我的$PS1从一个新行开始。(无论如何,它是一个多行提示,在一行中包含大量有用的信息,然后在下一行中只包含一个提示字符,这样相当长的命令就不会换行了)
Why should I have an empty line at the end of a source/header file—如果文本文件包含one
two
three,则它包含三行,其中没有一行是空的。如果文本文件包含one
two
three,那么它不是文本文件,从同样的意义上说,结尾没有句号的句子不是句子。
想想如果没有换行符可能会出现的一些问题。根据ANSI标准,文件开头的#include插入文件的方式与文件前面的方式完全相同,并且不在文件内容后面的#include后面插入新行。因此,如果在解析器的末尾包含一个没有换行符的文件,那么它将被视为foo.h的最后一行与foo.cpp的第一行位于同一行。如果foo.h的最后一行是没有新行的注释呢?现在,foo.cpp的第一行被注释掉了。这些仅仅是一些可以爬行的问题类型的例子。
只是想把任何有兴趣的人指给詹姆斯下面的答案。虽然上面的答案对于C仍然是正确的,但是新的C++标准(C++ 1