6

我的 proto 文件中有两个枚举,它们定义了几乎相同的值。

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

例子:

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

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

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

typedef A B;

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

4

2 回答 2

6

从 protobuf 版本 3 开始,这是不可能的。

于 2016-09-07T09:53:32.050 回答
4

这是一个老问题,但如果有些人仍然感兴趣,现在可以使用 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;

于 2018-03-17T23:41:32.773 回答