gpt4 book ai didi

c++ - Protocol Buffer : Understanding the compiled output of proto files

转载 作者:搜寻专家 更新时间:2023-10-31 00:25:54 24 4
gpt4 key购买 nike

**大家好,我是 protobuf 的新手。我试图了解这里的基础知识。我在目录 /path/to/Directory/ 中创建了示例原型(prototype)文件 Test.proto:

syntax = "proto2";

message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;

enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}**

message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}

repeated PhoneNumber phone = 4;
}

并编译成

 protoc -I=/path/to/Directory/ --cpp_out=/path/to/Directory/ /path/to/Directory/Test.proto

这创建了 2 个文件 Test.pb.hTest.pb.cc。现在我可以看到 Person 类中有不同的函数。让我们只取函数 (派生自 Test.proto 文件的 required string name = 1; 行)

现在编译器完成它的工作并提供这些不同的功能:

bool has_name() const;
void clear_name();
static const int kNameFieldNumber = 1;
const ::std::string& name() const;
void set_name(const ::std::string& value);
void set_name(::std::string&& value);
void set_name(const char* value);
void set_name(const char* value, size_t size);
::std::string* mutable_name();
::std::string* release_name();
void set_allocated_name(::std::string* name);

现在我的问题是:我在哪里可以找到每个功能的描述以及它们的作用?

最佳答案

起点是here (静态代码)和 here (生成的代码)。后者包括您在“具体”中询问的内容的概述 - 搜索:string* mutable_foo()string* release_foo()(注意它们重复用于proto2 与 proto3)。

关于c++ - Protocol Buffer : Understanding the compiled output of proto files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54552188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com