13

次のようにカスタムtypedef要素を定義しています....

typedef enum  {
    Ar,
    Cl,
    F,
    He,
    H,
    Kr,
    Ne,
    N,
    O,
    Rn,
    Xe
} Element;

Element 型の変数が設定されていないことを確認したい (基本的には、NULL 値を確認するだけです)。これを行う唯一の方法は、余分な行を追加することです。

.... {
      unknown = 0,
      Ar,
      F,
...etc

私は正しいですか、これを行うためのよりエレガントな方法はありますか?

4

1 に答える 1

24

はい、「不明な」値を含める必要があります。基本的に、enumは単なるintです。宣言で定数を定義しない場合 (最初のコード サンプルのように)、最初のオプションは0既定値に設定されます。

別の方法として、最初のオプションを に設定することもできます1。この方法では、値0は定義されず、手動で確認できます。

typedef enum {
    Ar = 1,
    Cl,
    F,
    He,
    H,
    Kr,
    Ne,
    N,
    O,
    Rn,
    Xe
} Element;


if (myElement) {  // same as  if (myElement != 0)
    // Defined
} else {
    // Undefined
}

しかし、代わりに明示的に定義された「不明な」値を選択します。

于 2012-09-26T00:47:48.930 に答える