1

我有以下原型定义

syntax = "proto3";

message SimpleMessage {
  repeated int32 lucky_numbers = 1;
}

和选项文件

SimpleMessage.lucky_numbers max_size:10 fixed_length:true

我使用以下命令运行 protoc

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];正如文件所示,我期待着。知道我哪里出错了吗?

4

1 回答 1

0

尝试这个:

SimpleMessage.lucky_numbers max_count:10 fixed_count:true

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

字段选项的文档在这里,最完整的信息在源代码注释中。

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

于 2022-02-05T07:46:56.407 回答