[英]Warning: Incompatible integer to pointer conversion when using NS_ENUM types
我正在使用枚举,类似这样:
typedef NS_ENUM(NSInteger, MyURLType) {
MyURLType1,
MyURLType2,
MyURLType3
};
当我尝试比较或识别类型时出现问题:
if (type == MyURLType2)
在MyUrlType2
和MyUrlType3
的情况下,我得到"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
为一个简单的MyURLType
( MyURLType type =…
)或解除引用type
比较时( if (*type == MyURLType2)
为什么不将类型定义为int? 然后,您可以比较整数。 简单干净的解决方案。
int type = MyURLTypeX;
会允许你这样做
if (type == MyURLType2)
因为它们都是整数。
怎么可能没有人提出这个呢?
只是研究这个,但看起来另一种选择是施放枚举:
if (type == (MyURLType *) MyURLType2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.