简介
与Protobuf-c 类似,nanopb 是也是一个轻量的、支持 C 语言的 Protobuf。
nanopb 下载地址:
https://jpa.kapsi.fi/nanopb/download/
nanopb文档:
https://jpa.kapsi.fi/nanopb/docs/index.html
pb_callback_t
其结构定义为
typedef struct pb_callback_s pb_callback_t;
struct pb_callback_s {
/* Callback functions receive a pointer to the arg field.
* You can access the value of the field as *arg, and modify it if needed.
*/
union {
bool (*decode)(pb_istream_t *stream, const pb_field_t *field, void **arg);
bool (*encode)(pb_ostream_t *stream, const pb_field_t *field, void * const *arg);
} funcs;
/* Free arg for use by callback */
void *arg;
};
主要用在嵌套message中。其中arg表示用于存放解码后的数据,也是用于回调函数encode,decode的第三个参数