[英]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.