C++枚举按位存储属性

    为了节省存储空间,让每个FeatureSupports的枚举值占据一个特定的比特位置,并使用时通过“或”运算压缩地存储在

    Compiler的spp成员中,使用时可以通过检测spp的某位来判断枚举。

    有时候枚举值非常多,而且在项目开发中还会不断的增加,那么代码编写者必须想办法对这些枚举的值进行校验,比如查验

    一下是否有重位等。使用最大枚举“SMAX”,与所有的枚举或运算值来验证是否有枚举重位。

    enum FeatureSupports {
    C99 = 0x0001,
    ExtInt = 0x0002,
    SAssert = 0x0004,
    NoExcept = 0x0008,
    SMAX = 0x0010,
    };

    struct Compiler {
    const char * name;
    int spp;
    };

    int main()
    {
    assert((SMAX - 1) == (C99 | ExtInt | SAssert | NoExcept));

    Compiler a = { "abc", (C99 | SAssert) };
    if (a.spp & C99)
    {

    }
    }

    有帮助就分享一下吧!

    转载请注明:少狼 – 敬畏知识的顽皮狗 » C++枚举按位存储属性

    喜欢 2

*

还没有人抢沙发呢~