Cで次の2つの列挙型宣言の違いは何ですか?
typedef enum colour { Red, Blue };
typedef enum colour { Red,Blue }colour;
//回答では、混乱を避けるために、この色をcolour2と呼んでください。
最も単純なケースでは、列挙は次のように宣言できます。
enum color {Red,Blue};
これへの参照の前には、enumキーワードを付ける必要があります。例えば:
enum color color_variable1; // declare color_variable of type 'enum color'
enum color color_variable2;
どこでもenumキーワードを使用する必要をなくすために、typedefを作成できます。
enum color {Red,Blue};
typedef enum color color2; // declare 'color2' as a typedef for 'enum color'
typedefを使用すると、同じ変数aを次のように宣言できます。
color2 color_variable3;
color2 color_variable4;
参考までに、Cの構造体も同様のルールに従います。typedefを使用すると、C struct(enum)キーワードを使用せずにコードをすっきりと見せることもできます。また、論理的な意味を与えることもできます。
typedef int RADIUS; // for a circle
typedef int LENGTH; // for a square maybe though both are int
最初のものはまったく正しいとは思いません..は必要ありませんtypedef
. 名前付きenum
で十分です。例:
enum colour {
Red, Blue
};
void myfunc(enum colour argument) {
if (argument == Red) {
// ...
} else {
// ...
}
}
これは、named を定義するときに行うこととまったく同じですstruct
。
2 つ目は、named を定義し、カスタム タイプ名をその namedenum
にマップします。匿名にして、カスタム タイプ名のみを定義することもできます。colour
enum
enum