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