我从GCC收到此警告:
警告:无法传递非POD类型的对象'class Something'到'...'; call将在运行时中止
它非常致命,特别是因为它称为中止。为什么这不是错误?我想把它弄错,但是:
-Wno-invalid-offsetof
看起来像隐藏它的标志,但它不是答案 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似乎会有更好的支持。