【发布时间】:2013-05-22 18:10:55
【问题描述】:
编辑:我找到了一种使用 GCC 禁用来自第三方代码的警告的方法。看这篇文章就在这里:http://sphaleron.blogspot.se/2011/06/ignoring-gcc-warnings-on-per-file-basis.html 或者正如 bames53 帖子所说!
我刚刚升级了我的 GCC 编译器,突然间我收到了很多以前从未有过的警告。当我没有指定它应该是 Sint16 时,基本上每个人都是从 int 到 Sin16 的转换。
下面这个例子应该会抛出这样的警告:
int number = 6;
SDL_Rect rect = {number, number, number, number};
SDL_Rect 需要 Sint16 作为输入。无论如何,当我检查新警告时,我开始修复这些警告(因为为什么不呢?),令我惊讶的是,我从添加的 glew 文件中收到了 100 多个警告,以便能够更有效地使用 OpenGL 进行绘制。我没有计划仅仅为了修复警告而进入该代码。
你会怎么做?这有多重要?如果我不修复它们,是否有办法删除这些警告?
澄清:我总是修复更严重的警告,只是我的代码中的所有警告都是 Narrowing 警告(在 glew.c 中,它是“warning: 'variable' redeclared without dllimport attribute :以前的 dllimport 忽略了 [-Wattributes]|"),我想知道修复这些问题有多重要,尤其是因为 glew 向我扔了一大堆。
【问题讨论】:
-
您可能不应该修复第三方标头中的警告。如果有的话,你可以将它报告给上游项目。但请注意,许多 OSS 项目不愿意修复任何编译器可以在任何架构中发出的任何编译器警告。这通常是一项不可能完成的任务。
-
您可以仅使用
-Wno-attributes选项(通过makefile、IDE 项目设置等)编译glew.c。如果您真的不关心该文件中的任何警告,请使用-w(注意这是小写w) -
我该如何制作一个makefile?我不明白这个概念,因为我从未使用过。您认为我需要了解任何基本知识吗?还是我应该按照教程来创建一个?
-
对于一个简单的项目来说,创建一个 makefile 非常容易。您当前是否每次都手动调用编译?我会发布一个简短的答案。