VS2008

2015-03-03 31 views
1

下協定緩衝錯誤C2059現在我一個消息中的協議緩衝區定義VS2008

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; 

經過調查,我發現在WinNT.h

#define DELETE (0x00010000L) 

似乎DELETE不能在協議緩衝區被宣佈爲DELETE已是聲明?我對嗎?或者有沒有其他關鍵字不能在協議緩衝區中使用?

回答

1

如果你不使用DELETE從WINNT.H,你可以用#undef取消定義它:

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