enum AccessSource
        {
            AccessSourceNull = 0x00000001,
            AccessSourceSec = 0x00000002,
            AccessSourceIpo = 0x00000004,
            AccessSourceSSA = 0x00000008,
            AccessSourceUpgrade = 0x00000010,
            AccessSourceDelta = 0x00000020,
            AccessSourcePhoneM = 0x00000040,
            AccessSourceSoft = 0x00000080,
            AccessSourceCR = 0x00000100,
            AccessSourceA = 0x00000200,
            AccessSourceE = 0x00000400,
            AccessSourceAll = 0xFFFFFFFF
        };

AccessSourceAll的值是什么?是-1吗?还是最大值?
我有一个参数ULONG x,其默认值为AccessSourceAll(表示访问全部)。如何仅删除AccessSourceE的访问权限?
如何再次添加AccessSourceE的访问权限?

如果我在x中有一个特定值,那么我如何知道是否设置了AccessSourceE?

最佳答案

由于C中的枚举类型为(int)0xFFFFFFFF,因此AccessSourceAll的值为int

未设置的AccessSourceE使用:

x & ~AccessSourceE  // to assign: x &= ~AccessSourceE;

要添加,请使用
x | AccessSourceE  // to assign: x |= AccessSourceE;

去测试,
if (x & AccessSourceE) { ... }

08-26 19:21