gpt4 book ai didi

c - 如何在 C 中保持全局存储区域类型独立?

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:56 26 4
gpt4 key购买 nike

我必须提前确保足够的空间以容纳多达 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];

关于c - 如何在 C 中保持全局存储区域类型独立?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39754645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com