我可以在 protobuf 中定义一个常量字符串吗?

Can I define a constant string in protobuf?

本文关键字:一个 常量 字符串 protobuf 定义 我可以      更新时间:2023-10-16

我使用 protobuf 的枚举在 C++ 应用程序和 Java 应用程序之间共享值。这样,相同的(int)值在语言之间共享,并且这些值在编译时可用。我可以通过在公共.proto文件中以某种方式定义字符串来对字符串执行类似操作吗?

不是真的。

您可以使用一些技巧。两者都不是很合适,而且(我认为)两者都在 proto3 中消失了:

  • 使用字符串字段定义一条消息,并为其指定一个默认值,即您的常量值。但是,Protobuf 3显然正在删除默认值。
  • 使用"自定义选项",它可能应该被称为"注释",因为它们很像Java或其他语言中的注释。您可以声明字符串类型的注释,然后使用注释某个虚拟声明并使用常量值。但是,自定义选项基于在 proto3 中删除的扩展,因此我假设自定义选项也已删除。(这是这里提供的答案:https://stackoverflow.com/a/11486640/2686899。

FWIW,Cap'n Proto,协议缓冲区的替代品,确实支持常量。(披露:我是Cap'n Proto以及Google的大部分Protobuf v2的作者。