在某些 C++ 编译器中出现以下警告的原因是什么?
文件末尾没有换行符
为什么我应该在源/头文件的末尾有一个空行?
原文由 LeChuck2k 发布,翻译遵循 CC BY-SA 4.0 许可协议
在某些 C++ 编译器中出现以下警告的原因是什么?
文件末尾没有换行符
为什么我应该在源/头文件的末尾有一个空行?
原文由 LeChuck2k 发布,翻译遵循 CC BY-SA 4.0 许可协议
就我而言,我使用 KOTLIN 语言,编译器在 IntelliJ 上。另外,我正在使用带有 LINT 的 docker 容器来修复可能存在的拼写错误、导入、代码使用等问题。这个错误很可能来自这些 lint 修复——我的意思是肯定的。
简而言之,错误说,“在文件末尾添加一个新行”就是这样。
在没有多余的空行之前:
原文由 Yasin Bekar 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答1.8k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
3 回答3k 阅读
1 回答1.7k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
想想如果没有换行符可能会出现的一些问题。根据 ANSI 标准,文件开头的
#include
将文件完全按原样插入文件的前面,并且不会在#include <foo.h>
之后插入新行文件的内容。因此,如果您在解析器的末尾包含一个没有换行符的文件,它将被视为 --- 的最后一行与foo.h
foo.cpp
第一行位于同一行。如果 foo.h 的最后一行是没有新行的注释怎么办?现在foo.cpp
的第一行被注释掉了。这些只是可能出现的问题类型的几个示例。只是想向任何感兴趣的人指出詹姆斯在下面的回答。虽然上述答案对于 C 仍然是正确的,但新的 C++ 标准 (C++11) 已更改,因此如果使用 C++ 和符合 C++11 的编译器,则不应再发出此警告。
通过 James 的帖子来自 C++11 标准: