nanopb的正确食用方法

在实用nanopb的时候,有时候我们在写proto结构message的时候,希望有一个数组,或者一个字符串,并且限制这个字符串的长度。通常情况下,是使用repeat关键字,但是一般这个时候生成的pb.h和pb.c需要用户去写一个callback函数去编解码,这么做非常麻烦,直接就能把人干劝退了。

于是这个时候有了第一个方法就是多加一个option文件,在option文件中限制长度。

下面是proto文件

syntax = "proto2";

package ProtoData;
       
message Person
{
	int32 Age = 1;
	string Name = 2; [Max=200]
}

然后在同样proto文件名称的option文件中定义这个变量 max_size:200;

ProtoData.Person.Name     max_size:200;

这样你才能生成一个可以用的pb文件,在生成的文件里会生成一个数组,

char Name[200];

不然你生成的就是pb_callback_t Name,一脸懵逼。

还有一种方法,是在proto3中使用的,上面的方法是在proto2中使用的。

syntax = "proto3";

import "nanopb.proto";

package ProtoData;

message person
{
    int32 Age = 1;
    string Name = 2[(nanopb).max_length = 200];
}

这样不用使用option文件,也可以生成一个数组

char Name[200];

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值