我可以在 protobuf 中定义一个常量字符串吗?
Can I define a constant string in protobuf?
我使用 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的作者。
相关文章:
- 用C++中的一个变量定义一个常量
- 从另一个常量标准::映射初始化一个常量标准::映射的一部分
- isdigit() 和 isalnum() 给出错误,因为输入是一个常量字符并且无法转换。其他可能查看输入是否为数字的方法?
- C++ 在 none 常量指针函数中返回一个常量指针
- 为什么重载"<<"需要一个常量参数?
- 为什么它是一个常量指针而不是指向常量指针
- 是一个常量句柄真的常量
- 将一个常量cstring附加到我自己的String类对象
- C++在类构造函数中定义了一个常量成员变量
- G++抱怨constexpr函数不是一个常量表达式
- 是一个常量字符串Still Preferrable
- 返回一个常量字符 *
- 将一个常量未签名的长流流式传输到流
- 从自定义 printf 函数返回一个常量字符*
- C++做虚函数总是必须是一个常量
- 我想将一个常量字符串写入包含另一个输入数据块的文件
- 如何计算初始化一个常量数组(制作常量查找表)
- C++:在初始化列表中传递一个常量 *p
- 我可以在 protobuf 中定义一个常量字符串吗?
- 初始化一个常量变量,如果失败则断言(c++)