C 这个枚举是什么意思?
我今天看到这行代码,不知道它是做什么的C 这个枚举是什么意思?,c,C,我今天看到这行代码,不知道它是做什么的 typedef enum { SomeOptionKeys = 1 << 0 // ? } SomeOption; typedef枚举{ SomeOptionKeys=1它只是将枚举设置为值1。这可能是为了指示值是2的幂。下一个值可能被指定为1SomeOptionKeys的值是1,这是使用标志时的一种有用表示: typedef enum { flag1 = 1 << 0, // binary 000000000000000
typedef enum {
SomeOptionKeys = 1 << 0 // ?
} SomeOption;
typedef枚举{
SomeOptionKeys=1它只是将枚举设置为值1。这可能是为了指示值是2的幂。下一个值可能被指定为1SomeOptionKeys的值是1,这是使用标志时的一种有用表示:
typedef enum {
flag1 = 1 << 0, // binary 00000000000000000000000000000001
flag2 = 1 << 1, // binary 00000000000000000000000000000010
flag3 = 1 << 2, // binary 00000000000000000000000000000100
flag4 = 1 << 3, // binary 00000000000000000000000000001000
flag5 = 1 << 4, // binary 00000000000000000000000000010000
// ...
} SomeOption;
它似乎定义了一个枚举类型,该类型应该包含一组标志。您可能会看到更多的标志被定义,如下所示:
typedef enum {
FirstOption = 1 << 0,
SecondOption = 1 << 1,
ThirdOption = 1 << 2
} SomeOption;
if (myOptions & ThirdOption)
{
...
}
您可以检查哪些选项设置如下:
typedef enum {
FirstOption = 1 << 0,
SecondOption = 1 << 1,
ThirdOption = 1 << 2
} SomeOption;
if (myOptions & ThirdOption)
{
...
}
1@WTP可能是它的一部分。在枚举中常见的多个值是fst=1+1,因为在我看来这是这里最完整的答案,我也从中学到了一些东西。感谢这个全面的答案!
typedef enum {
OptionKeyA = 1<<0,
OptionKeyB = 1<<1,
OptionKeyC = 1<<2,
} OptionKeys;
int ASet( OptionKeys x){
return (x & OptionKeyA);
}
myflags | OptionKeyB