Protocol buffers 防止Protobuffer重命名字段(类、成员、枚举项)

Protocol buffers 防止Protobuffer重命名字段(类、成员、枚举项),protocol-buffers,protoc,Protocol Buffers,Protoc,我正在尝试将一个项目从Google Protocol Buffers 3.0.0-beta-2移植到3.1.0。在重新编译了我的.proto文件后,我注意到,由于protoc强制执行了我没有选择的编码标准,并相应地重命名了字段,因此我在项目中出现了许多编译错误。我不想在项目内部将例如MDData重命名为MDData或XYServer重命名为XYServer,因为缩略语的预期含义现在已丢失,并且可能会在以后的协议缓冲区版本中发生更改 我在C语言部分看到了这个行为,我不确定这是否也是C++生成的代码

我正在尝试将一个项目从Google Protocol Buffers 3.0.0-beta-2移植到3.1.0。在重新编译了我的
.proto
文件后,我注意到,由于protoc强制执行了我没有选择的编码标准,并相应地重命名了字段,因此我在项目中出现了许多编译错误。我不想在项目内部将例如
MDData
重命名为
MDData
XYServer
重命名为
XYServer
,因为缩略语的预期含义现在已丢失,并且可能会在以后的协议缓冲区版本中发生更改

<>我在C语言部分看到了这个行为,我不确定这是否也是C++生成的代码的例子。 TL;医生:


有没有办法在Google Protocol Buffer的Proto编译器中禁用自动代码样式更改(并保留我自己的格式)?

除了编写自己的代码生成器之外,没有办法强制执行这项操作。只有存根的公共API被认为是稳定的

在后台,protoc编译器每次都从头开始重新生成代码,因此它无法知道文件的原始样式。为了做到这一点,需要将它与proto一起传递到原始生成的文件中


也就是说,如果您想修改代码生成器,这当然是可能的

谢谢你的回复。你能链接到什么是公共API的一部分,什么不是公共API的一部分吗?例如,升级时,枚举值的名称会更改。这被认为是公共API的一部分吗?