我想typdef一個枚舉是另一個typdef枚舉的擴展。我可以typdef一個枚舉是另一個typdef枚舉的擴展嗎?
一個typedef枚舉有4個元素(因爲我只在結構中有2個位來存儲它的值),另一個具有相同的4個元素,加上第5個元素(不存儲在結構中,只用於標記無效值)。
示例代碼:
typedef enum {
case0,
case1,
case2,
case3,
} case_t;
typedef enum {
one_t, // 0 through 3 <---HOW CAN I DO THIS?
invalid_case, // 4
} case_ext_t
struct {
case_t case_ :2; // 2 bits, for up to 4 cases
unsigned other_stuff:14; //
} a_word;
case_ext_t my_case = invalid_case;
if (condition) {
my_case = case2;
}
if (my_case != invalid_case) {
switch (my_case) {
case case0: {....} break;
case case1: {....} break;
case case2: {....} break;
case case3: {....} break;
}
}
我可以的typedef一個case_ext_t包括所有case_t額外的那些元素,再加上?
另外,我可以定義只是更大的typedef枚舉case_ext_t,但只使用其前4個元素,當它存儲它的2位結構?
您**可以**擴展另一個'enum'的值。將第二個「enum」的第一個值設置爲第一個「enum」+1的最後一個值。然後,當您引用任何這些'enum'標識符時,它將是唯一的。雖然'typedef'和'enum'爲什麼不能迴避我。吻。 –
@Waether Vane>爲什麼typedef一個枚舉逃避我...我廣泛使用它們;例如,請參閱上面的代碼:我鍵入一個枚舉,然後將其用作結構中元素的類型(而不是「無符號」) –