Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对数组类型为的表达式赋值时出错 我有一个函数名为“代码> un包装< /COD>,编译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; }_C++_C_Pointers_Variable Assignment - Fatal编程技术网

对数组类型为的表达式赋值时出错 我有一个函数名为“代码> un包装< /COD>,编译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; }

对数组类型为的表达式赋值时出错 我有一个函数名为“代码> un包装< /COD>,编译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; },c++,c,pointers,variable-assignment,C++,C,Pointers,Variable Assignment,我将这些错误传播到代码的每一行: .../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库中获取的。我曾尝试使用外部

我将这些错误传播到代码的每一行:

.../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库中获取的。我曾尝试使用
外部程序
,但似乎效果不太好。现在,当我
make
original repository()时,它的编译似乎没有问题。包含并使用此代码的TinyEKF的compile命令是:

gcc-Wall-I.-I..//src-o-gps\u-ekf-gps\u-ekf.c..//src/tiny\u-ekf.c-lm

这可以在存储库中的
/extras/c/
中找到,并且肯定会使用
解包功能

根据,
ekf.x
属于
double x[]
类型。你不能只分配给一个数组,比如
ekf->x=dptr,如错误所示。如果要将数据从
dptr
复制到
ekf->x
,可以使用
memcpy

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

所有其他赋值也一样,大多数字段都是双数组。

请提供类/结构ekf\t的定义。只需将其编译为C,不是C++,当然你仍然可以将它与C++代码联系起来。确保代码< > x>代码>和<>代码> p>代码>类型:字段在代码> EKFFYT 中是双代码>双*< /代码>指针。所有这些成员都是数组,并且不能分配给数组。拿起一本好的入门书。不是……这是我不懂的。如果它适用于存储库中给出的示例,那么我只是在我的程序中重新创建相同的东西。它不应该工作吗?我相信它们在原始代码中也是数组,被分配给一个double。这就是我困惑的原因。这发生在哪个示例文件中?看一看会很有趣。如果你看一下/extras/c,有一个GPS示例使用它,并且没有抛出错误。它现在编译,以检查它是否以我们希望的方式运行。