6

我刚刚阅读了这篇关于为什么存在换行警告的帖子,但老实说,我的团队有一些人在几个不同的平台上工作,并与几个不同的编辑器一起工作(每个人都使用最适合他们的东西),所以警告已经无处不在,而且因为它不是真正值得关注的警告已成为噪音,并使查找严重警告变得麻烦。

很多时候重要的警告都被忽视了,因为人们已经习惯了无数无用的警告经过,所以他们显然只是停止仔细查看它们,恕我直言。可以说在我们的案例中,GCC 哭得太狼狈了,以至于任何人都不再认真对待它,这是一种不好的态度,但它只是人性。

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

注意:我仔细阅读了手册,但没有在任何明显的地方找到答案,所以我放弃了。

注意:作为对 Robert Gamble 完全合理的解决方案的回应,我们的代码是跨平台的,并且我们有人员并在 Linux、Solaris 和 Windows 上构建,因此新行……尚未达成共识。并且某人的编译器总是会哭狼。因为有超过 40 名开发人员,以及其他非程序员人员。

4

6 回答 6

6

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

于 2008-11-12T03:27:45.107 回答
5

据我所知,没有一个,我已经使用 GCC 多年了。

更新: C++11 标准不应该有任何警告。相关问

于 2008-11-12T03:08:55.893 回答
4

你为什么不只是确保你的文件有一个终止的换行符,就像他们应该的那样?这应该是有问题的编辑器中的简单配置更改,并且似乎是“消除”警告的一种非常简单的方法。

于 2008-11-12T02:56:38.617 回答
4
-Wno-eof-newline

这是与gcc 错误 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警告。

于 2014-02-18T20:01:30.337 回答
0

我有 90% 的把握将其关闭。

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

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

这是一篇包含一些python代码(我没有尝试过)的博客文章,它说它将修复这个问题的源文件。

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

于 2008-11-12T03:00:59.263 回答
0

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

于 2008-11-12T04:01:50.747 回答