[英]How do I get rid of these warnings?
这确实是几个问题,但无论如何...
我正在处理XCode中的一个大项目,相对较新的是最近从MetroWorks移植的(是的,是的),并且有很多我想摆脱的警告。 每隔一段时间就会出现一个重要警告,但我从未看过它们,因为有太多的垃圾警告了。 因此,如果我可以弄清楚如何使XCode停止发出警告,或者实际上解决问题,那将是很好的。 以下是警告:
<map.h>
是过时的。 但是,当我用<map>
替换它时,我的文件无法编译。 显然,map.h中有一些不在地图中... 条件表达式中的枚举不匹配: <anonymous enum>
与<anonymous enum>
这似乎来自?:运算符。 可能then和else分支的计算结果不相同吗? 至少在一种情况下是(matchVp == NULL ? noErr : dupFNErr)
而且由于它们都是OSErr类型,这是mac定义的...我不确定是怎么回事。 当我有其他成对的Mac常数时,它似乎也会出现...
多字符常量
这是显而易见的。 问题是我实际上需要多字符常量。
-fwritable-strings与文字CF / NSString不兼容
我在项目和目标设置中都未选中“字符串是只读的”框...似乎没有任何作用...
<map.h>
中的项目位于全局名称空间中,而<map>
中的项目位于std名称空间中。 您很可能只是直接引用全局版本,而当您切换到<map>
您不再看到它们,因为它们已移至std::
。 在源文件中添加一个using namespace std
以快速进行操作。 在标题中,您需要使用std::
限定地图相关项的使用。
我认为您需要使用尾随的UL限定文字常量值,以便它知道文字的正确类型。
枚举很可能位于两个单独的OS定义的匿名枚举中。 您可以static_cast他们以静默警告。
不知道多字节字符。
您可以禁用-fwritable-strings吗? 您可以重构需要修改常量字符串的代码吗?
“多字符常量”
这是显而易见的。 问题是我实际上需要多字符常量。
使用-Wno-multichar
编译-将其添加到“其他警告标志”,并关闭“四字符文字”警告。
当然,这个遗留代码的多字符字符常量是否实际上与在Metrowerks下对同一体系结构的含义相同……这是一个悬而未决的问题。
该十进制常数写为3111222333UL
吗?
我发现至少从Xcode 3.2.4开始,您可以通过在常量中使用多个字符来消除该警告,该常量是该类型的正确长度。
例如,我有一个仅3个字符长的常量“ TT2”,这给了我多字符字符常量错误。 在常量上加0将使错误消失,例如:'\\ 0TT2'。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.