上一篇介绍了protobuf-c的构建。接下来介绍一下protobuf-c的使用。protobuf最核心的就是proto文件,其次通过protobuf-c编译proto文件生成供c语言调用的库文件和头文件。下面逐一说明一下proto文件的定义、protobuf-c编译以及c语言如何使用protobuf。
一、proto文件结构
protobuf以消息Message为主要结构,消息中包含具体的字段,字段定义主要以required(必填字段)、optional(可选字段)、repeated(可重复字段)为主,包含了各大编程语言的基本数据类型、引用类型等。具体定义参考如下:.proto文件:包含了Message结构定义的协议文件,我们需要首先编写.proto文件,然后再生成编程语言对应的源文件。
Message结构:包含了字段的,每一条字段都包含定义声明、数据类型以及字段序号。字段序号是唯一不重复的,序号保证了不同语言和平台的序列化和反序列化字段的字节顺序。
定义声明:required:声明该字段是必填字段。
optional:声明该字段是可选字段。
repeated:声明该字段是可重复字段,通常用数组表示,也可以是list。
数据类型:protobuf支持的数据类型很全,可参考如下表:.proto类型描述packc/c++类型bool布尔类型pack(1)bool
double64位浮点类型pack(N)double
float32位浮点类型pack(N)float
int3232位整数类型pack(N)int
int6464位整数类型pack(N)__int64
uint32无符号32位整数类型p