什么旗帜让GCC警告文件结尾没有新行?

What flag silences GCC's warning about no newline at file-endings?

我刚读过这篇关于为什么存在新线警告的帖子,但说实话,我的团队让人们在几个不同的平台上工作,并且有几个不同的编辑(每个人都使用最好的套件),所以警告已经无处不在,并且因为它的不是真的值得注意它的警告会变成噪音,并且会发现严重的警告是一件麻烦事。

很多时候重要的警告都没有引起注意,因为人们已经习惯了无数的无用警告经过,所以他们显然只是停止仔细观察它们,并且有理由恕我直言。有人可以说,在我们的案例中,海湾合作委员会正在哭泣狼太多,任何人都不再认真对待它,这是一种恶劣的态度,但它只是人性。

现在我们用-Wall编译,因为我们需要警告,但是有一个计数器标志来避免新行警告吗?

注意:我看了一下手册,但在任何明显的地方找不到答案,所以我放弃了。

注意:为了回应Robert Gamble完全合理的解决方案,我们的代码是跨平台的,我们的人员和构建基于Linux,Solaris和Windows,所以新线......没有达成共识。有人的编译器总是会哭泣。因为有超过40名开发人员,以及其他非程序员工。


假设您使用某种源控制系统,您可以添加一个预提交钩子,以确保文本文件以适当的换行符结束。此外,根据您使用的源控制系统,您可以添加一个预提交挂钩,如果它不存在则实际修复该行结束。


据我所知,没有一个人,我多年来一直使用海湾合作委员会。

更新:
不应该使用C ++ 11标准提出任何警告。相关问题


你为什么不确保你的文件有一个像它们应该的终止换行?这应该是违规编辑器中的简单配置更改,并且似乎是一种"静音"警告的简单方法。


1
-Wno-eof-newline

这是添加了gcc bug 14331的修复程序

奇怪的是,我实际上无法让gcc输出缺少换行符的警告。我想新版本完全放弃了这个警告。

我可以让gcc接受-Wno-eof-newline但是当我尝试-Weof-newline时它会抱怨无法识别的标志。 C ++ 11在文件末尾删除了对换行符的要求,但是为了用旧标准编写可移植代码,应该可以启用这种迂腐警告。

幸运的是,clang仍能正确支持有关缺少换行符的诊断:可以在所有模式下使用-Wnewline-eof启用此警告,或者在C ++ 11及更高版本模式下也可以使用-Wc++98-compat-pedantic启用此警告。

默认情况下这些警告是关闭的,但是如果您利用clang的-Weverything标志来启用"减法"策略来控制警告,那么在C ++ 11及更高版本模式下,您需要-Wno-newline-eof-Wno-c++98-compat-pedantic禁用警告。


在源控件中添加一个钩子,在添加换行符之前不允许成功执行代码签入?


我90%肯定没有争论可以解决这个问题。

警告的原因是没有结束行的文件在编译时会给出未定义的行为:

见标准:
http://c0x.coding-guidelines.com/5.1.1.2.html

这是一篇博客文章,其中包含一些python代码(我还没有尝试过),它说它将解决此问题的源代码文件。

http://www.johndcook.com/blog/tag/gcc/