別のtypdef列挙型の拡張である列挙型をtypdefしたいと思います。別のtypdef列挙型の拡張である列挙型をtypdefできますか?
1つのtypedef列挙型は4つの要素を持っています(なぜなら、その値を格納する構造体には2ビットしかないからです)。もう1つは同じ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;
}
}
は、私はすべてのcase_tの要素に加え、追加のものが含まれてcase_ext_tをtypedefはできますか?
また、より大きなtypedef列挙型case_ext_tを定義することはできますが、構造体の2ビットを格納するときは最初の4要素のみを使用しますか?
あなたは**別のもので 'enum'の値を拡張することができます**。 2番目の 'enum'の最初の値を最初の' enum' +1の最後の値に設定します。そして、それらの 'enum'識別子のいずれかを参照すると、それは一意になります。なぜ、「typedef」というenumが私を逃すのですか?キッス。 –
@Waether Vane>なぜtypedef enumが私を見捨てるのですか...私はそれらを広範囲に使います。たとえば、上記の私のコードを参照してください:私は列挙型をtypedefし、構造体( "符号なし"の代わりに)の要素の型としてそれを使用する –