我有以下.proto文件:

enum Enum1{
    X=0;
    Y=1;
}
message SomeClass{
    required  Enum1 enum1=1;
    required Enum2 enum2=2;
}
enum Enum2{
    X=0;
    Z=1;
}

当我尝试使用protoc对其进行编译时,出现以下错误:



我有什么办法可以克服这个问题!

最佳答案

您可以在另一个消息中包含枚举,这样可见性就不会冲突。

范例:

message Enum1{
 enum Enum{
     X=0;
     Y=1;
 }
}

message Enum2{
 enum Enum{
     X=0;
     Y=1;
 }
}

message SomeClass{
    required  Enum1.Enum enum1=1;
    required Enum2.Enum enum2=0;
}

您也可以在枚举值前加上一些前缀。如果您不更改值名称后的数字,则该数字应与旧版本兼容:
例如:
enum Enum1{
    E1_X=0;
    E1_Y=1;
}
enum Enum2{
    E2_X=0;
    E2_Z=1;
}
message SomeClass{
    required  Enum1 enum1=1;
    required Enum2 enum2=2;
}

09-10 21:42