【发布时间】:2010-02-18 08:15:46
【问题描述】:
在 C 程序中,我收到“从不兼容的指针类型传递参数”警告,但是我想收到错误并终止编译而不是警告。
我应该在 makefile 中设置什么标志?
【问题讨论】:
标签: c
在 C 程序中,我收到“从不兼容的指针类型传递参数”警告,但是我想收到错误并终止编译而不是警告。
我应该在 makefile 中设置什么标志?
【问题讨论】:
标签: c
如果使用gcc,我认为你需要的选项组合是-fstrict-aliasing -Wstrict-aliasing=3 -Werror=strict-aliasing。有关strict-aliasing 选项的文档,请参阅this text。
【讨论】:
-Wstrict-aliasing=1 将触发不兼容的指针类型警告。
如果您使用 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)。
我也有同样的问题。上面的建议没有奏效,更接近的是
gcc -Werror -Wno-error=all
【讨论】: