我正在尝试使用C90编译器(MS VS2012)编译protobuf-c示例.
在protobuf-c源代码中,有两个C99特定的东西可以很容易地改变为与C90兼容,即在范围中间的变量声明(C90中不允许)和通过-syntax 实例化结构.(例如some_struct_type name = {.a=1,.b=2}) .
我现在卡住了一个编译错误.源文件'protobuf-cc'中的相应行读取:
void *array = *(void **) member + siz * (*p_n);
Run Code Online (Sandbox Code Playgroud)
哪里member是定义为void *和p_n作为size_t *.各自的错误是
error C2036: 'void *' : unknown size
Run Code Online (Sandbox Code Playgroud)
请注意,这对protobuf-c版本1.0.1有效(请参阅相应的源代码,第2404行).此行已在版本1.0.2中更改为
void *array = *(char **) member + siz * (*p_n);
Run Code Online (Sandbox Code Playgroud)
有这个评论.因此更改行会消除编译错误.
我的问题是:
*(char **)版本吗?(出于其他原因,我想坚持使用protobuf-c 1.0.1)