2

Cで次の2つの列挙型宣言の違いは何ですか?

  1. typedef enum colour { Red, Blue };

  2. typedef enum colour { Red,Blue }colour;//回答では、混乱を避けるために、この色をcolour2と呼んでください。

4

3 に答える 3

3

最も単純なケースでは、列挙は次のように宣言できます。

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
于 2013-01-10T10:30:56.917 に答える
0

最初のものはまったく正しいとは思いません..は必要ありませんtypedef. 名前付きenumで十分です。例:

enum colour {
    Red, Blue
};

void myfunc(enum colour argument) {
    if (argument == Red) {
        // ...
    } else {
        // ...
    }
}

これは、named を定義するときに行うこととまったく同じですstruct

2 つ目は、named を定義し、カスタム タイプ名をその namedenumにマップします。匿名にして、カスタム タイプ名のみを定義することもできます。colourenumenum

于 2013-01-10T10:23:36.730 に答える