gpt4 book ai didi

c++ - 错误分配给具有数组类型的表达式

转载 作者:行者123 更新时间:2023-11-28 04:22:00 26 4
gpt4 key购买 nike

我有一个名为 unpack 的函数,编译 C++ 代码会导致一些错误。代码如下:

static void unpack(void *v, ekf_t *ekf, int n, int m) {
/* skip over n, m in data structure */
char *cptr = (char *) v;
cptr += 2 * sizeof(int);

double *dptr = (double *) cptr;
ekf->x = dptr;
dptr += n;
ekf->P = dptr;
dptr += n * n;
ekf->Q = dptr;
dptr += n * n;
ekf->R = dptr;
dptr += m * m;
ekf->G = dptr;
dptr += n * m;
ekf->F = dptr;
dptr += n * n;
ekf->H = dptr;
dptr += m * n;
ekf->Ht = dptr;
dptr += n * m;
ekf->Ft = dptr;
dptr += n * n;
ekf->Pp = dptr;
dptr += n * n;
ekf->fx = dptr;
dptr += n;
ekf->hx = dptr;
dptr += m;
ekf->tmp0 = dptr;
dptr += n * n;
ekf->tmp1 = dptr;
dptr += n * m;
ekf->tmp2 = dptr;
dptr += m * n;
ekf->tmp3 = dptr;
dptr += m * m;
ekf->tmp4 = dptr;
dptr += m * m;
ekf->tmp5 = dptr;
}

我在代码的每一行都传播了这些错误:

.../src/ekf.c:203:12: error: assignment to expression with array type
ekf->x = dptr;
^
.../src/ekf.c:205:12: error: assignment to expression with array type
ekf->P = dptr;

需要注意的是,unpack 代码是从 C 库中获取的。我试过使用 extern,但这似乎不太奏效。现在,当我 make 原始存储库 ( https://github.com/simondlevy/TinyEKF ) 时,它似乎编译没有问题。包含并使用此代码的 TinyEKF 的编译命令是:

gcc -Wall -I。 -I../../src -o gps_ekf gps_ekf.c ../../src/tiny_ekf.c -lm

这可以在存储库的 /extras/c/ 中找到,并且肯定会使用 unpack 函数。

最佳答案

根据 this , ekf.xdouble x[] 类型。正如错误所述,您不能只分配给 ekf->x = dptr; 这样的数组。如果你想从dptr复制数据到ekf->x,你可以使用memcpy:

memcpy(&ekf->x, dptr, sizeof(ekf->x));

所有其他赋值也是如此,大部分字段都是double数组。

关于c++ - 错误分配给具有数组类型的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55255818/

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