【发布时间】:2017-08-01 13:12:42
【问题描述】:
我正在尝试使用 avro-c 做一个简单的字符串 setter getter 程序。
我的代码是:
avro_value_t frame_value;
avro_schema_t frame_schema = avro_schema_string();
avro_value_iface_t *frame_iface = avro_generic_class_from_schema(frame_schema);
avro_generic_value_new(frame_iface, &frame_value);
char *name;
int size;
avro_value_set_string(&frame_value,"hello");
avro_value_get_string(&frame_value,name,&size);
printf("\nname is %s",name);
printf("\nsize is %d",size);
但它输出一个空字符串,尽管大小是正确的,包括空字符在内是 6。我做错了什么?
【问题讨论】:
-
您的编译器打印了哪些警告?你试图让他们沉默是什么?
-
删除所有警告 working.size 应该是 size_t 类型。我认为 int 可以转换为 size_t。
-
int和size_t的大小可能不同。size_t的存在可能是有原因的。 ;) 而且您的编译器并没有因为name的错误类型而大喊大叫?除了 AndreKampling 的答案中显示的其他缺陷之外,这些缺陷并不容易解决。如果您的编译器提供了提示,请听!
标签: c serialization avro