繁体   English   中英

如何摆脱这些警告?

[英]How do I get rid of these warnings?

这确实是几个问题,但无论如何...

我正在处理XCode中的一个大项目,相对较新的是最近从MetroWorks移植的(是的,是的),并且有很多我想摆脱的警告。 每隔一段时间就会出现一个重要警告,但我从未看过它们,因为有太多的垃圾警告了。 因此,如果我可以弄清楚如何使XCode停止发出警告,或者实际上解决问题,那将是很好的。 以下是警告:

  • 它声称<map.h>是过时的。 但是,当我用<map>替换它时,我的文件无法编译。 显然,map.h中有一些不在地图中...
  • 此十进制常量仅在ISO C90中是无符号的
    与无符号长整数相比,这是一个很大的数字。 我什至都没有效果。
  • 条件表达式中的枚举不匹配: <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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM