我从 GCC 得到这个警告:
警告:不能通过 '...' 传递非 POD 类型 'class Something' 的对象;调用将在运行时中止
这是非常致命的,尤其是因为它调用了中止。为什么这不是错误?我想让它成为一个错误,但是:
- 如何使特定警告成为错误?
- 是哪个警告?根据3.8 Options to Request or Suppress Warnings,
-Wno-invalid-offsetof
它看起来像是隐藏它的标志,但事实并非如此。
我从 GCC 得到这个警告:
警告:不能通过 '...' 传递非 POD 类型 'class Something' 的对象;调用将在运行时中止
这是非常致命的,尤其是因为它调用了中止。为什么这不是错误?我想让它成为一个错误,但是:
-Wno-invalid-offsetof
它看起来像是隐藏它的标志,但事实并非如此。我不确定正确的警告是什么,但是一旦找到它,您可以使用以下内容更改其配置(以“格式”为例):
#pragma GCC diagnostic error "-Wformat"
或者正如strager指出的那样:
gcc -Werror=format ...
我已经为此检查了 gcc 源,并且无法通过命令行标志禁用此特定警告。
-Werror=specific-warning
将-Wspecific-warning
在 GCC 4.3.x 或更高版本中将指定转换为错误。在 4.1.2 中,仅-Werror-implicit-function-declaration
适用。请注意连字符而不是等号——它仅适用于特定情况,不适用于其他情况。这是更严重的常见警告之一,将其变为错误绝对很方便。
除此之外,旧版本的 GCC 似乎只提供了-Werror
使每个最后一个警告都成为错误的大锤。
听起来还有很多其他警告,您不想变成错误(使用-Werror标志)。一般来说,修复所有警告是一种很好的做法。使用-Werror 会强制执行此操作。
您可以使用-Werror编译器标志将所有或部分警告转换为错误。