让一个gcc警告错误?

时间:2009-01-24 03:10:41

标签: gcc gcc-warning

我从GCC收到此警告:

  

警告:无法传递非POD类型的对象'class Something'到'...'; call将在运行时中止

它非常致命,特别是因为它称为中止。为什么这不是错误?我想把它弄错,但是:

  1. 如何将特定警告设为错误?
  2. 是什么警告?根据{{​​3}},-Wno-invalid-offsetof看起来像隐藏它的标志,但它不是

5 个答案:

答案 0 :(得分:24)

我不确定正确的警告是什么,但是一旦你找到它,你就可以用以下内容改变它的处置方式(以'格式'为例):

#pragma GCC diagnostic error "-Wformat"

或者直截了当地指出:

gcc -Werror=format ...

编辑:我刚刚检查了gcc源代码,并且无法通过命令行标记禁用此特定警告。

答案 1 :(得分:12)

-Werror=specific-warning会将指定的-Wspecific-warning转换为GCC 4.3.x或更新版本中的错误。在4.1.2中,只有-Werror-implicit-function-declaration有效。注意连字符而不是等号 - 它仅适用于特定情况而不适用于其他情况。这是一个比较严重的常见警告,它确实很容易让它变成错误。

除此之外,旧版本的GCC似乎只提供-Werror大锤使每一个警告都出错。

答案 2 :(得分:7)

听起来有很多其他警告,你不想把它们变成错误(使用-Werror标志)。一般来说,修复所有警告的良好做法。使用-Werror强制执行此操作。

答案 3 :(得分:4)

您可以使用-Werror编译器标志将所有或部分警告变为错误。

答案 4 :(得分:2)

您可以使用-fdiagnostics-show-option查看适用于特定警告的-W选项。

不幸的是,在这种情况下,没有特定的选项可以涵盖该警告。

gcc-4.5似乎会有更好的支持。