繁体   English   中英

警告:使用NS_ENUM类型时,不兼容的整数到指针转换

[英]Warning: Incompatible integer to pointer conversion when using NS_ENUM types

我正在使用枚举,类似这样:

typedef NS_ENUM(NSInteger, MyURLType) {
    MyURLType1,
    MyURLType2,
    MyURLType3
};

当我尝试比较或识别类型时出现问题:

if (type == MyURLType2)

MyUrlType2MyUrlType3的情况下,我得到"Incompatible integer to pointer conversion"警告(不是在MyURLType1的情况下)。 我在宣言中做错了吗? 有任何想法吗?

谢谢!

从你的评论

是的,我使用的是MyURLType * type = MyURLTypeX

然后type不是MyURLType类型,它是pointer to MyURLType类型的pointer to MyURLType

if (type == MyURLType2)

在这里,您将指针类型( type )与整数类型( MyURLType )进行比较。 如果整数类型为0 ,则不会生成警告,因为它可能是对NULL的检查。

你要么需要声明type为一个简单的MyURLTypeMyURLType type =… )或解除引用type比较时( if (*type == MyURLType2)

为什么不将类型定义为int? 然后,您可以比较整数。 简单干净的解决方案。

int type = MyURLTypeX; 

会允许你这样做

if (type == MyURLType2)因为它们都是整数。

怎么可能没有人提出这个呢?

只是研究这个,但看起来另一种选择是施放枚举:

if (type == (MyURLType *) MyURLType2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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