【问题标题】:How to declare an enum variable null?如何声明一个枚举变量为空?
【发布时间】:2014-08-13 22:35:18
【问题描述】:

我是 Objective C 的新手。这是我的代码

enum effectName {
    RESET, Flea,Tint,Grayscale,Pixelate,Blur,Mirror,changeBrightness,changeContrast,Invert
};
enum effectName EffectToApply;        
enum effectName prevEffect;

在实现文件中,我必须将 EffectToApply 和 prevEffect 声明为 null。我试过这样做

-(void) Effect    
{        
     EffectToApply= NULL;        
     prevEffect=nil;
} 

但它给出了一个警告 Incompatible pointer to integer conversion。有人可以帮我怎么做吗?

【问题讨论】:

    标签: objective-c cocoa-touch enums


    【解决方案1】:

    枚举实际上是一个整数,并且与整数一样,这样的类型在 C 或 Objective-C 中都不能表示从 0 开始的 NULL 值1

    处理这个问题的最简单方法是使用“NONE”枚举选项,通常值为 0。

    enum effectName {
        NoEffect, ResetEffect, ..
    };
    
    enum effectName EffectToApply; // default value => 0 / NoEffect
    

    1 参见Can a conforming C implementation #define NULL to be something wacky 了解很多 C-lawyer 如何定义 NULL;一些库define NULL as 0 or 0L,虽然是允许的,但(不幸的是)不会发出观察到的警告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      相关资源
      最近更新 更多