让一个gcc警告错误?

27 gcc gcc-warning

我从GCC收到这个警告:

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

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

  1. 如何使特定警告出错?
  2. 这是什么警告?根据http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html,-Wno-invalid-offsetof看起来像隐藏它的标志,但它不

Sea*_*ght 25

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

#pragma GCC diagnostic error "-Wformat"
Run Code Online (Sandbox Code Playgroud)

或者直截了当地指出:

gcc -Werror=format ...
Run Code Online (Sandbox Code Playgroud)

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


小智 12

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

除此之外,旧版本的GCC似乎只是为-Werror大锤提供了每一个警告的错误.


Ste*_*yle 7

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


str*_*ger 5

您可以使用-Werror编译器标志将全部或部分警告转换为错误。