2010-10-16 83 views
0

我使用VC2008作爲我的編譯器,它是驚訝,我認爲一個枚舉可能沒有定義的應用:爲什麼會枚舉類型沒有使用定義

void func(enum EnumType type) 
{ 

} 

以上代碼可以編譯和運行,而不一個問題,任何人都可以解釋它爲什麼有效?

更新: 我可以定義在C++中的空枚舉,如下:

enum EnumType {}; 

回答

2

這顯然是一個非標準的Visual C++語言擴展。

您不能在標準C++中轉發聲明enum

+0

你是否認爲表達式「enum EnumType type」作爲前向聲明? – 2010-10-16 00:30:36

+0

@Dbger:是的。*** – 2010-10-16 00:35:30

+0

如果這是真的,似乎MS在這裏做出2個技巧:1.當你聲明函數的參數時,你可以轉發declare sth; 2. VC++認爲枚舉的大小應該總是4個字節,至少默認情況下。 – 2010-10-16 00:44:25