我怎样才能使这个 GCC 警告成为错误?

发布于 2024-07-11 18:28:57 字数 393 浏览 8 评论 0 原文

我从 GCC 收到此警告:

警告:无法通过“...”传递非 POD 类型“class Something”的对象; 调用将在运行时中止

这是非常致命的,特别是因为它调用了中止。 为什么这不是一个错误? 我想将其设为错误,但是:

  1. 如何将特定警告设为错误?
  2. 这是哪个警告? 根据3.8 请求或抑制警告的选项, -Wno-invalid-offsetof,看起来像是隐藏它的标志,但事实并非如此。

I get this warning from GCC:

warning: cannot pass objects of non-POD type 'class Something' through '...'; call will abort at runtime

It's pretty deadly, especially since it calls an abort. Why isn't this an error? I would like to make it an error, but:

  1. How do I make a specific warning an error?
  2. Which warning is it? According to 3.8 Options to Request or Suppress Warnings, -Wno-invalid-offsetof, it looks like the flag to hide it, but it doesn't.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

南巷近海 2024-07-18 18:28:57

我不确定正确的警告是什么,但是一旦找到它,您可以使用以下内容更改其配置(使用“格式”作为示例):

#pragma GCC diagnostic error "-Wformat"

或者作为 strager指出

gcc -Werror=format ...

我已经检查了这个和这个特定的gcc源代码无法通过命令行标志禁用警告。

I'm not sure what the correct warning is, but once you've found it, you can change its disposition with the following (using 'format' as the example):

#pragma GCC diagnostic error "-Wformat"

Or as strager points out:

gcc -Werror=format ...

I've checked the gcc source for this and this specific warning cannot be disabled via command line flags.

泪冰清 2024-07-18 18:28:57

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

除此之外,旧版本的 GCC 似乎只提供了使每个最后警告成为错误的大锤。

-Werror=specific-warning will turn the specified -Wspecific-warning into an error in GCC 4.3.x or newer. In 4.1.2, only -Werror-implicit-function-declaration works. Note the hyphen instead of equals sign -- it works for that specific case only and no others. This is one of the more serious common warnings and it's definitely handy to make it into an error.

Apart from that, older versions of GCC only seem to provide the -Werror sledgehammer of making every last warning an error.

鸢与 2024-07-18 18:28:57

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

It sounds like there are a bunch of other warnings that you don't want to be turned into errors (using the -Werror flag). In general, it's good practice to fix all warnings. Using -Werror forces this.

无声无音无过去 2024-07-18 18:28:57

您可以使用-Werror< /em> 编译器标志将所有或部分警告转换为错误。

You can use the -Werror compiler flag to turn all or some warnings into errors.

独自唱情﹋歌 2024-07-18 18:28:57

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

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

看来GCC 4.5对此会有更好的支持。

You can use -fdiagnostics-show-option to see the -W option that applies to a particular warning.

Unfortunately, in this case there isn't any specific option that covers that warning.

It appears that there will be better support for this in GCC 4.5.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文