2011-11-15 170 views
0

我有下面的代碼,它在Linux和Mac OS X下編譯時沒有錯誤。我現在想用Windows編譯代碼,但在以下代碼段中遇到很多錯誤:enum的Visual Studio編譯器錯誤

... 
enum Type 
    { 
     UPDATE = 0, DELETE = 1 
    }; 
... 

錯誤消息是這些:

1>Request.hpp(48) : error C2143: syntax error : missing '}' before '(' 
1>Request.hpp(48) : error C2059: syntax error : '<L_TYPE_raw>' 
1>Request.hpp(49) : error C2143: syntax error : missing ';' before '}' 
1>Request.hpp(49) : error C2238: unexpected token(s) preceding ';' 

我是怎麼錯了,我真的很困惑,因爲這編譯沒有Linux下的錯誤。 什麼會導致這種錯誤?

+2

在枚舉定義的上方和下方發佈代碼。另外,指出代碼中的行號,以便我們可以瞭解哪行對應代碼中的哪一行。 – Nawaz

+0

感謝您的回覆,但我發現我的錯誤。 – tune2fs

回答

4

解決方案很簡單,但需要找出DELETE是在Windows頭文件中定義的宏。

我現在添加了#undef DELETE,它工作正常。

+2

'DELETE'不是Visual Studio關鍵字。 Windows頭文件定義了一個名爲DELETE的宏來定義訪問控制掩碼。 –

+0

謝謝,我對Visual Studio很陌生,我在答案中改變了它。 – tune2fs

0

Type是一個現有的類。您需要更改名稱或指定它是文字。

您可以嘗試enum @Type來指定文字,但您可能需要在其他地方以@作爲前綴。