PARITY_NONE是C++ Windows中的关键字?

wjw*_*ood 0 c++ windows visual-studio-2010 boost-asio parity

我正在使用boost编写一个串行库,我有一个枚举:

enum parity_t { PARITY_NONE, PARITY_ODD, PARITY_EVEN };
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

错误1错误C2059:语法错误:'('

我无法弄清楚问题是什么.然后我的朋友和我试过:

void PARITY_NONE();
Run Code Online (Sandbox Code Playgroud)

我们得到了这些错误:

错误1错误C2143:语法错误:在'常数'之前缺少')'

错误2错误C2143:语法错误:缺少';' 在'恒定'之前

错误3错误C2182:'WORD':非法使用'void'类型

错误4错误C2059:语法错误:')'

我包括boost asio,我认为它包括Windows serial api.这仅发生在Windows中.作为一种解决方法,我改变了我的枚举名称.但是,我无法在互联网上找到与此问题相关的任何内容.有人可以帮我们解决这个问题吗?

Cat*_*lus 5

它在winbase.h中定义:

//
// Settable Stop and Parity bits.
//

#define STOPBITS_10       ((WORD)0x0001)
#define STOPBITS_15       ((WORD)0x0002)
#define STOPBITS_20       ((WORD)0x0004)
#define PARITY_NONE       ((WORD)0x0100)
#define PARITY_ODD        ((WORD)0x0200)
#define PARITY_EVEN       ((WORD)0x0400)
#define PARITY_MARK       ((WORD)0x0800)
#define PARITY_SPACE      ((WORD)0x1000)
Run Code Online (Sandbox Code Playgroud)

#undef 在创建你的枚举之前.

  • 这就是为什么宏是邪恶的原因:[C++ - enum vs. const vs. #define](http://stackoverflow.com/questions/4767667/c-enum-vs-const-vs-define) (3认同)