C++ 是否可以在google protobuf中为类型(枚举或消息)定义别名?
我的proto文件中有两个枚举,它们定义了几乎相同的值 是否可以删除其中一个并留下一个别名以保持所有代码正常工作 例如:C++ 是否可以在google protobuf中为类型(枚举或消息)定义别名?,c++,enums,protocol-buffers,C++,Enums,Protocol Buffers,我的proto文件中有两个枚举,它们定义了几乎相同的值 是否可以删除其中一个并留下一个别名以保持所有代码正常工作 例如: enum A { a = 0; b = 1; } enum B { a = 0; b = 1; } 我想在c++中使用类似typedef的东西: enum A { a = 0; b = 1; } typedef A B; 我在文档中没有找到这个。有什么解决办法吗?从protobuf版本3开始,这是不可能的。这是一个老问题,但如果有些人
enum A {
a = 0;
b = 1;
}
enum B {
a = 0;
b = 1;
}
我想在c++中使用类似typedef的东西:
enum A {
a = 0;
b = 1;
}
typedef A B;
我在文档中没有找到这个。有什么解决办法吗?从protobuf版本3开始,这是不可能的。这是一个老问题,但如果有些人仍然感兴趣, 现在可以使用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.
}
如官方文件所述。您只需通过添加
选项allow\u alias=true来启用别名选项代码>typedef枚举A{…}B
更简洁,并且使用B=enum A{…}如果你愿意的话,代码>也应该可以。我发誓,我需要找到第一个想到“smth”是“某物”的可接受替代词的人。我希望看到语言不可知的解决方案。在谷歌上搜索C#项目的“protobuf类型别名”,只找到了这个页面。根据proto3文档,这似乎不再正确。