C言語で列挙型(enum)を定義するにはどうすればいいですか?質問する

C言語で列挙型(enum)を定義するにはどうすればいいですか?質問する

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

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

しかし、これはコンパイルされず、次のエラーが発生します。

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

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

ベストアンサー1

は必要ないことを指摘しておく価値がありますtypedef。次のようにすればいいのです。

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

を好むかどうかはスタイルの問題ですtypedef。 がない場合、列挙型を参照したい場合は を使用する必要がありますenum strategy。 がある場合、 とだけ言うことができますstrategy

どちらの方法にも長所と短所があります。1 つはより冗長ですが、型識別子をタグ名前空間に保持します。タグ名前空間では、型識別子は通常の識別子と競合しません (struct statstat関数を考えてみてください。これらも競合しません)。また、型であることがすぐにわかります。もう 1 つはより短いですが、型識別子を通常の名前空間に持ち込みます。

おすすめ記事