c++ - 是否可以在 google protobuf 中为类型(枚举或消息)定义别名?

标签 c++ enums protocol-buffers

我的原型(prototype)文件中有两个枚举,它们定义了几乎相同的值。

是否可以删除其中一个并留下一个别名以保持所有代码正常工作?

例子:

enum A {
   a = 0;
   b = 1;
}
enum B {
   a = 0;
   b = 1;
}

我想在 C++ 中使用类似 typedef 的东西:

enum A {
   a = 0;
   b = 1;
}

typedef A B;

我没有在文档中找到这个。有任何解决方法吗?

最佳答案

这是一个老问题,但如果有人仍然感兴趣, 现在可以使用 protobuf 在枚举上创建别名

enum EnumAllowingAlias {
  option allow_alias = true;
  UNKNOWN = 0;
  STARTED = 1;
  RUNNING = 1;
}
enum EnumNotAllowingAlias {
  UNKNOWN = 0;
  STARTED = 1;
  // RUNNING = 1;  // Uncommenting this line will cause a compile error inside Google and a warning message outside.
}

如官方文档中所述here .您只需要通过添加 option allow_alias = true;

来启用别名选项

关于c++ - 是否可以在 google protobuf 中为类型(枚举或消息)定义别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17533549/

相关文章:

c++ - 类型转换长指针问题

c++ - 在另一个类中完成删除时出现 Valgrind 错误

java - 将类枚举传递给克隆是否克隆安全?

python - 有任何使用 Protocol Buffer 的经验吗?

c++ - 我们如何在UML图中表达概念?

c++ - 有没有办法在枚举中使用关键字作为标识符?

javascript - 将 int 转换为 Typescript 中的枚举字符串

C# RestSharp PUT 方法并发送原始字节 (protobuf)

java - 安装Protocol Buffers时出现编译错误

c++ - 如何解析cpprestsdk生成的多个Set-Cookie?