nanopb 不应用选项

nanopb not applying options

我有以下原型定义

syntax = "proto3";

message SimpleMessage {
  repeated int32 lucky_numbers = 1;
}

和选项文件

SimpleMessage.lucky_numbers max_size:10 fixed_length:true

我 运行 协议如下

protoc --plugin=protoc-gen-nanopb=nanopb/generator/protoc-gen-nanopb ./simple.proto "--nanopb_out=-v -f simple.options:."

并且它正确地选择了选项(不知道为什么它打印了两次相同的东西)

Options for SimpleMessage.lucky_numbers: max_size: 10
proto3: true
fixed_length: true

现在,当我检查生成的 simple.pb.h 时,我看到

/* Struct definitions */
typedef struct _SimpleMessage {
    pb_callback_t lucky_numbers;
} SimpleMessage;

我期待 int32_t lucky_numbers[10]; 如文档所示。知道我哪里出错了吗?

试试这个:

SimpleMessage.lucky_numbers max_count:10 fixed_count:true

长度设置用于字符串和字节字段,而计数设置用于数组。它们是分开的,因为您可以有字符串数组并指定两个选项。

字段选项的文档是 here, and the most complete information is in the source code comments

调试消息加倍的原因是 nanopb 生成器对所有输入文件进行初步解析以收集任何依赖项,然后解析要求它再次生成的文件。