我可以在应用程序之间更改 .proto 文件的命名空间吗?

Can I change the namespace of a .proto file between applications?

本文关键字:文件 命名空间 proto 应用程序 之间 我可以      更新时间:2023-10-16

基本上,我有一个.proto定义,将包声明为main

package main;

此文件正由两个程序使用。我正在重写其中之一。当我为此定义生成 c++ 文件时,生成的命名空间main 。这会导致与main函数冲突。现在我只是用这个包装生成的文件的标题和源:

#define main protocol
//Generated code
#undef main

我想知道重命名.proto文件中的包是否安全,如果这样做,生成的协议缓冲区消息是否兼容。

类似的东西

package xxx;
//Same definitions

是的,在使用二进制协议的数据方面,这将是 100% 兼容的 - 二进制 DAT 排除所有名称,仅包含标签号。

如果您使用的是 JSON 协议,则某些名称很重要 - 尤其是成员名称。