【问题标题】:get error instead of incompatible pointer type warning得到错误而不是不兼容的指针类型警告
【发布时间】:2010-02-18 08:15:46
【问题描述】:

在 C 程序中,我收到“从不兼容的指针类型传递参数”警告,但是我想收到错误并终止编译而不是警告。

我应该在 makefile 中设置什么标志?

【问题讨论】:

    标签: c


    【解决方案1】:

    如果使用gcc,我认为你需要的选项组合是-fstrict-aliasing -Wstrict-aliasing=3 -Werror=strict-aliasing。有关strict-aliasing 选项的文档,请参阅this text

    【讨论】:

    • 对于 gcc 4.6.3 仍然报告警告而不是错误。顺便说一句,在那个文档中,他们说-Wstrict-aliasing=1 将触发不兼容的指针类型警告。
    【解决方案2】:

    如果您使用 gcc,请添加 -Werror 标志。

    【讨论】:

    • 但我只需要那种类型的警告,而不是全部
    • 您不能选择仅将某些警告视为错误。要么全有,要么全无。
    • 你可以选择特定的警告变成像-Werror=format这样的错误(那个id来自gcc输出warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat])。但不幸的是,对于 gcc 4.6.3,我得到了incompatible pointer type [enabled by default]。所以看起来-Werror 在这种情况下是唯一的方法。我使用@lee answer 的方法将一些错误转回警告(如-Wno-error=format)。
    【解决方案3】:

    我也有同样的问题。上面的建议没有奏效,更接近的是

    gcc -Werror -Wno-error=all

    【讨论】:

      猜你喜欢
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多