簡體   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