protobuf-c 只有.c .h源文件没有.proto文件能否恢复.proto文件呢

答案是肯定的,只是想从proto-c生成的源文件恢复.proto描述文件,目前还没有自动化的工具,必须人去识别并恢复.proto文件

  • 我们知道,.proto文件里面由enum枚举类型和message消息体组成,message里面可以嵌套enum或者另外一个message

enum枚举类型,和一般的C语言定义枚举类型没什么两样,message的字段修饰由三个关键字来描述,分别是required、optional、repeated


  • 比如说生成的.h源码如下,里面有一个_PermitJoinType枚举,我们就知道.proto文件里面的enum名字叫做PermitJoinType,就是不带前面的下划线:
    在这里插入图片描述

.proto文件对应的enum类型如下:
在这里插入图片描述

  • 比如说.h源码里面的struct结构体,里面有一个结构体如下,名字叫做_AFAddr,对应在.proto文件里面的message名字就叫做AFAddr:
    在这里插入图片描述

.proto文件对应的message类型如下,请注意,例如上面.h文件里面的结构体字段有一个has_shortaddr,其实.proto文件里面并没有这个字段,主要是proto用的是optional可选关键字来描述shortaddr,所以protobuf-c在处理这个关键字的时候,另外加了一个变量has_shortaddr用来标明这个字段是否有值,接收方在收到这个字段的同时会收到has_shortaddr,所以就能知道是否真正有值:
在这里插入图片描述

  • 对应的还有repeated关键字的处理,protobuf-c会另外增加一个n_前缀的变量,用于标明repeated关键字描述的字段具体数量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值