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) { ... }