[ProtoBuf]ProtoBuf命令生成的Cpp文件分析
2017-09-26 01:14
489 查看
生成文件
在[ProtocolBuffer]定义ProtocolBuffer消息中的Person.proto文件用命令protoc.exe --cpp_out=./ Person.proto生成的Person.pb.h和Person.pb.cc;Person.pb.h其关键部分代码如下:
namespace tutorial {
// Internal implementation detail -- do not call these.
void protobuf_AddDesc_Person_2eproto();
void protobuf_AssignDesc_Person_2eproto();
void protobuf_ShutdownFile_Person_2eproto();
class Person;
class Person_PhoneNumber;
class AddressBook;
enum Person_PhoneType {
Person_PhoneType_MOBILE = 0,
Person_PhoneType_HOME = 1,
Person_PhoneType_WORK = 2
};
...
class Person_PhoneNumber : public ::google::protobuf::Message {
public:
Person_PhoneNumber();
virtual ~Person_PhoneNumber();
...
Person_PhoneNumber(const Person_PhoneNumber& from);
inline Person_PhoneNumber& operator=(const Person_PhoneNumber& from) {
CopyFrom(from);
return *this;
}
void Swap(Person_PhoneNumber* other);
...
// implements Message ----------------------------------------------
Person_PhoneNumber* New() const;
void CopyFrom(const ::google::protobuf::Message& from);
void MergeFrom(const ::google::protobuf::Message& from);
void CopyFrom(const Person_PhoneNumber& from);
void MergeFrom(const Person_PhoneNumber& from);
void Clear();
bool IsInitialized() const;
int GetCachedSize() const { return _cached_size_; }
public:
...
// nested types ----------------------------------------------------
// accessors -------------------------------------------------------
// required string number = 1;
inline bool has_number() const;
inline void clear_number();
static const int kNumberFieldNumber = 1;
inline const ::std::string& number() const;
inline void set_number(const ::std::string& value);
inline void set_number(const char* value);
inline void set_number(const char* value, size_t size);
inline ::std::string* mutable_number();
inline ::std::string* release_number();
inline void set_allocated_number(::std::string* number);
// optional .tutorial.Person.PhoneType type = 2 [default = HOME];
inline bool has_type() const;
inline void clear_type();
static const int kTypeFieldNumber = 2;
inline ::tutorial::Person_PhoneType type() const;
inline void set_type(::tutorial::Person_PhoneType value);
// @@protoc_insertion_point(class_scope:tutorial.Person.PhoneNumber)
private:
inline void set_has_number();
inline void clear_has_number();
inline void set_has_type();
inline void clear_has_type();
::std::string* number_;
int type_;
...
static Person_PhoneNumber* default_instance_;
};
如何使用
使用形式1
int main(void){
Person msg1;
msg1.set_id(101);
msg1.set_name("hello");
cout<<msg1.id()<<endl;
cout<<msg1.name()<<endl;
system("pause");
return 0;
}
/*输出
101
hello
*/
相关文章推荐
- android使用wire方式生成protobuf的Java文件
- Mac 环境下编译Protobuf 生成多种语言文件
- 批量生成protoBuf到cs文件
- 利用ubuntu将.cpp生成二进制的可执行文件,然后利用.bat(脚本)编写命令,将可执行文件在android机上运行
- 用proto命令生成java文件
- 分析.cpp文件编译生成的汇编文件里语句的作用
- 用proto命令生成java文件
- 根文件系统的构建与分析(四)之瑞士军刀busybox生成系统基本命令
- Mac上安装Protobuf以及生成lua文件
- 如何使用protobuf-net生成.cs(c#)文件
- protobuf安装与生成c++文件
- 利用Android Studio将Protobuf文件生成Java文件
- protobuf 自动生成c# .cs文件 -protogen用法
- protobuf的配置原始文件.proto中,使用修饰符repeated、required、optional生成的java文件的区别
- 在Unity.ulua环境下如何生成lua的protobuf文件
- Python 对谷歌协议文件 .proto 文件的生成与处理 (python 命令、查找、替换)
- Protobuf一键生成代码bat文件
- Protobuff java 文件生成命令
- 我想把我的c++的cpp文件用一个批处理命令就能生成一个源文件列表
- windows下面编译protobuf,生成.a文件供android NDK使用