VS2008下的协议缓冲区错误C2059

时间:2015-03-03 07:30:43

标签: c++ protocol-buffers

现在我在协议缓冲区中定义了一条消息

message Test
{
    enum OperationFlag
    {
        ADD = 0;
        DELETE = 1;
    }
    optional OperationFlag flag = 1;
}

在遵守protoc(版本2.5.0)后,将生成头文件。但是,以下行

有一个错误syntax error : 'constant'
static const OperationFlag DELETE = Test_OperationFlag_DELETE;

经过调查,我发现DELETE

中的WinNT.h已经声明了
#define DELETE  (0x00010000L)

似乎DELETE无法在协议缓冲区中声明?我对吗?或者是否有任何其他关键词不能用于协议缓冲区?

1 个答案:

答案 0 :(得分:1)

如果您不使用WinNT.h中的DELETE,则可以使用#undef取消定义:

#include "windows.h"
#undef DELETE
....
static const OperationFlag DELETE = Test_OperationFlag_DELETE;