得到错误而不是不兼容的指针类型警告
Posted
技术标签:
【中文标题】得到错误而不是不兼容的指针类型警告【英文标题】:get error instead of incompatible pointer type warning 【发布时间】:2010-02-18 08:15:46 【问题描述】:在 C 程序中,我收到“从不兼容的指针类型传递参数”警告,但是我想收到错误并终止编译而不是警告。
我应该在 makefile 中设置什么标志?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于得到错误而不是不兼容的指针类型警告的主要内容,如果未能解决你的问题,请参考以下文章
自定义 UITableViewCell 的不兼容指针类型警告
在 iOS 7 之前的项目中编译警告“不兼容的指针类型初始化 'UIImage *' 使用类型为'CIImage * _Nullable”的表达式