在C中跟隨2枚枚舉聲明有什麼區別?C中的枚舉聲明之間的區別?
typedef enum colour { Red, Blue };
typedef enum colour { Red,Blue }colour;
//你的反應中,請參閱本顏色顏色2,以避免混淆
在C中跟隨2枚枚舉聲明有什麼區別?C中的枚舉聲明之間的區別?
typedef enum colour { Red, Blue };
typedef enum colour { Red,Blue }colour;
//你的反應中,請參閱本顏色顏色2,以避免混淆
在最簡單的情況下,枚舉可以聲明爲
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,同樣variableA的現在可以聲明爲
color2 color_variable3;
color2 color_variable4;
僅供參考,C中的結構也遵循類似的規則。如果沒有C struct(枚舉)關鍵字,typedef也會使代碼更加整潔。它也可以給出邏輯意義。
typedef int RADIUS; // for a circle
typedef int LENGTH; // for a square maybe though both are int
謝謝!你的鏈接很好地解釋了它.. http://stackoverflow.com/questions/707512/what-is-a-typedef-enum-in-objective-c – GuiccoPiano
我不認爲第一個是正確的一切,你不需要typedef
。一個名爲enum
就足夠了;例如:
enum colour {
Red, Blue
};
void myfunc(enum colour argument) {
if (argument == Red) {
// ...
} else {
// ...
}
}
這與您在定義名爲struct
時所做的操作完全相同。
第二個將定義一個名爲enum
並將自定義類型名稱colour
映射到名爲enum
。您也可以使enum
匿名,並只定義自定義類型名稱。
謝謝jmc。這個鏈接真的解釋得很好: http://stackoverflow.com/questions/707512/what-is-a-typedef-enum-in-objective-c – GuiccoPiano
其實最簡單的例子甚至不需要被命名爲
enum{
Red, //Implicitly 0
Blue //Implicitly 1
};
是完全可以接受的。
這樣做只是爲了替換一堆#define語句。你不想傳遞枚舉顏色所期望的枚舉形狀值。
但是技術上可以使用它在一個整數的地方,所以
int foo(int x){
return x;}
int y = foo(Red);
將返回0
其要麼枚舉顏色{紅,藍};或在您的問題中輸入2 當您使用typedef時,您需要指定枚舉的別名。所以1型不是有效的。 –
對不起,但我不明白你的意思...你可以多解釋一下。 – GuiccoPiano
http://stackoverflow.com/questions/707512/what-is-a-typedef-enum-in-objective-c 這將幫助您更好地瞭解typedef –