抱歉,对 protobuf 还很陌生。复制粘贴一些代码并得到一个没有多大意义的错误。请任何人都可以帮忙。
message person {
required string name = 1;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
}
我得到的错误是当我运行 protoc p2.proto --cpp_out=.:
p2.proto:4:1: Expected "required", "optional", or "repeated".
p2.proto:4:1: Expected type name.
p2.proto:10:1: Expected "required", "optional", or "repeated".
p2.proto:10:1: Expected type name.
我不确定你使用哪种语法,但如果它是 proto3 你需要修复一些东西 首先,由于相关文档和论坛(例如),您不需要在每个字段后面使用required,因为它毫无意义,在“protobuf”中,默认情况下所有字段都被视为必填。 此版本中也不允许使用默认值。 接下来最重要的问题是,您需要显式声明您的对象,然后通过分配的名称在主模型中引用这些对象,如下所示:
message Person{
string name = 1;
PhoneType PersonPhoneType = 2;
PhoneNumber PersonPhoneNumber = 3;
}
enum PhoneType{
MOBILE = 1;
HOME = 2;
WORK = 3;
}
message PhoneNumber{
string Number = 1;
}
或:
message Person{
string name = 1;
PhoneNumber PersonPhoneNumber = 2;
}
enum PhoneType{
MOBILE = 1;
HOME = 2;
WORK = 3;
}
message PhoneNumber{
string Number = 1;
PhoneType PersonPhoneType = 2;
}