C言語のenumを使用する際の適切な構文がよくわかりません。以下のようなコードがあります。
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;