1. ホーム
  2. c

[解決済み】C言語で列挙型(enum)を定義するには?

2022-04-19 19:08:15

質問

C 言語の列挙型を使用するための適切な構文がわかりません。次のようなコードがあります。

enum {RANDOM, IMMEDIATE, SEARCH} strategy;
strategy = IMMEDIATE;

しかし、これは次のようなエラーが出て、コンパイルできません。

error: conflicting types for ‘strategy’
error: previous declaration of ‘strategy’ was here

何が間違っているのでしょうか?

どうすればいいですか?

enum変数の宣言は、以下のように行います。

enum strategy {RANDOM, IMMEDIATE, SEARCH};
enum strategy my_strategy = IMMEDIATE;

ただし typedef のように、変数の宣言を短くすることができます。

typedef enum {RANDOM, IMMEDIATE, SEARCH} strategy;
strategy my_strategy = IMMEDIATE;

型と変数を区別するための命名規則を持つことは、良いアイデアです。

typedef enum {RANDOM, IMMEDIATE, SEARCH} strategy_type;
strategy_type my_strategy = IMMEDIATE;