我必须提前确保足够的空间以容纳多达 4k 的总条目,这些条目按任意比例分为两种不同类型,然后用数据填充它。我以为我会为更大类型的 4k 分配足够的空间,然后决定用数据填充它实际上是什么类型。我遇到了一个问题,编译器告诉我error (etoa:1554): illegal type(s): ptr-to-void '+' int。
在我的初始化函数中,我分配空间是这样的:
ser_dat_ch = calloc(LABEL_T_CNT,
(sizeof(mpls_vpws_t) > sizeof(mpls_vpls_t)
? sizeof(mpls_vpws_t)
: sizeof(mpls_vpls_t)));
其中 ser_dat_ch
在文件范围内声明如下:
static void *ser_dat_ch = NULL;
当我将数据加载到结构中时,我想做类似的事情
rv = switch_mpls_vpws_data_get(lab, (mpls_vpws_t*)&ser_dat_ch[lab]);
,但这就是编译器对我咆哮的原因。有什么问题?
在这种特殊情况下,我认为最简单的解决方案是创建一个包含 union 类型的 4K 条目的缓冲区。
struct A {/**/};
struct B {/**/};
union AB {
struct A a;
struct B b;
};
union AB ser_dat_ch[4000];
我是一名优秀的程序员,十分优秀!