2011-11-15 84 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来指定文字,但您可能需要在其他地方以@作为前缀。