0

我试图用位掩码枚举文件类型,以便在按位 OR 上快速轻松地区分:

typedef enum {

    FileTypeDirectory = 1,
    FileTypePIX = 2,
    FileTypeJPG = 4,
    FileTypePNG = 8,
    FileTypeGIF = 16,
    FileTypeHTML = 32,
    FileTypeXML = 64,
    FileTypeTXT = 128,
    FileTypePDF = 256,  
    FileTypePPTX = 512,

    FileTypeAll = 1023

} FileType;

我的 OR 手术一直有效,直到 128,之后它失败了。64 位 Mac OSX 上的枚举是否仅限于字节数据类型?(2^7=128)

4

2 回答 2

0

C 中的所有enum 常量都是类型int而不是枚举本身的类型。因此,限制不在于enum变量的存储大小,而在于int.

我不太了解objective-c(因为它也被标记了),但它不应该与C有太大的偏差。

于 2012-08-17T13:17:40.087 回答
0

我不太确定您是如何使用OR运算符的,但它适用于我的typedef.

FileType _fileType = FileTypeGIF | FileTypePDF | FileTypePPTX;
NSLog(@"filetype is : %d", _fileType);

结果是:

filetype is : 784

这是正确的值,因为16 + 256 + 512正是784


(仅在真机上测试过。)

于 2012-08-17T13:36:57.347 回答