生成された proto ファイルの文字列変数が pb_callback_t に変換される Nanopb を使用しています。
だから、これまでのところ、nanopb からのコールバックのテスト例を試しています。
bool encode_string(pb_ostream_t* stream, const pb_field_t* field, void* const* arg)
{
char str[14] = "Hello world!";
if (!pb_encode_tag_for_field(stream, field))
return false;
return pb_encode_string(stream, (uint8_t*)str, strlen(str));
}
int main()
{
FeatureFile featurefile = FeatureFile_init_zero;
pb_ostream_t stream = pb_ostream_from_buffer(buffer, sizeof(buffer));
featurefile.features.Id.funcs.encode = &encode_string;
}
しかし、この例では、文字列「Hello world!」xD はかなりハードコードされていますが、代わりにメインからその関数に文字列を動的に渡すにはどうすればよいですか?