protoc编译器错误超出枚举值0x88000000的范围

时间:2018-07-10 01:49:05

标签: protocol-buffers protobuf-c

在原始文件中,我有一个枚举,就像我将其转换为c ++代码一样 它将错误Integer超出field(_G,_P,_L)的范围。在https://developers.google.com/protocol-buffers/docs/proto3#enum中说“枚举数常量必须在32位整数范围内”。请帮助我解决此问题

枚举字段是

 pb_EnumTargetType_A = 0x40000000;
 tpb_EnumTargetType_G = 0x88000000;
 tpb_EnumTargetType_P = 0x8C000000;
  tpb_EnumTargetType_L = 0x8A000000;

1 个答案:

答案 0 :(得分:0)

我猜它正在将其解释为一个编号,因此需要超过32位才能编码为有符号整数。将其写为有符号整数似乎可行:

pb_EnumTargetType_A = 0x40000000;
tpb_EnumTargetType_G = -2013265920; // 0x88000000
tpb_EnumTargetType_P = -1946157056; // 0x8C000000
tpb_EnumTargetType_L = -1979711488; // 0x8A000000