我可以在应用程序之间更改 .proto 文件的命名空间吗?
Can I change the namespace of a .proto file between applications?
基本上,我有一个 .proto
定义,它将包声明为 main
。
package main;
两个程序正在使用此文件。我正在重写其中一个。当我为此定义生成 c++ 文件时,生成的命名空间是 main
。这会导致与 main
函数发生冲突。现在我只是用这个包裹 header 和生成文件的来源:
#define main protocol
//Generated code
#undef main
我想知道重命名 .proto
文件中的包是否安全,如果我这样做,生成的协议缓冲区消息是否兼容。
类似
package xxx;
//Same definitions
是的,就使用二进制协议的数据而言,这将是 100% 兼容的 - 二进制 DAT 不包括 所有 名称,仅包括标签号。
如果您使用 JSON 协议,一些名称很重要 - 特别是成员名称。
基本上,我有一个 .proto
定义,它将包声明为 main
。
package main;
两个程序正在使用此文件。我正在重写其中一个。当我为此定义生成 c++ 文件时,生成的命名空间是 main
。这会导致与 main
函数发生冲突。现在我只是用这个包裹 header 和生成文件的来源:
#define main protocol
//Generated code
#undef main
我想知道重命名 .proto
文件中的包是否安全,如果我这样做,生成的协议缓冲区消息是否兼容。
类似
package xxx;
//Same definitions
是的,就使用二进制协议的数据而言,这将是 100% 兼容的 - 二进制 DAT 不包括 所有 名称,仅包括标签号。
如果您使用 JSON 协议,一些名称很重要 - 特别是成员名称。