c语言警告文件末尾没有换行符,c ++ - “文件末尾没有换行符”编译器警告
c ++ - “文件末尾没有换行符”编译器警告
在某些C ++编译器中出现以下警告的原因是什么?
文件末尾没有换行符
为什么我应该在源/头文件的末尾有一个空行?
11个解决方案
199 votes
想想如果没有新行可能会出现的一些问题。 根据ANSI标准,开头文件的#include将文件完全按原样插入到文件的前面,并且不会在文件内容之后的#include 之后插入新行。 因此,如果您在解析器的末尾包含一个没有换行符的文件,它将被视为foo.h的最后一行与foo.cpp的第一行在同一行。如果foo.h的最后一行是注释 没有新线? 现在foo.cpp的第一行被注释掉了。 这些只是可能出现的问题类型的几个例子。
只是想将任何感兴趣的人指向詹姆斯的回答。 虽然上述答案对于C仍然是正确的,但新的C ++标准(C ++ 11)已经更改,因此如果使用C ++和符合C ++ 11的编译器,则不再发出此警告。
从C ++ 11标准到James'帖子:
一个非空的并且不以换行符结尾的源文件,或者在任何此类拼接发生之前以反斜杠字符开头的新行字符结尾的源文件,应该被处理,就像另一个新文件一样 - 行字符被附加到文件中(C ++11§2.2/ 1)。
TJ Seabrooks answered 2019-04-11T09:51:10Z
40 votes
在C ++ 11中删除了每个源文件以非转义换行符结尾的要求。 该规范现在为:
一个非空的并且不以换行符结尾的源文件,或者在任何此类拼接发生之前以反斜杠字符开头的新行字符结尾的
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
