【发布时间】:2010-01-29 17:36:56
【问题描述】:
在我的data.h 文件中,我有:
typedef struct {
double ***grid;
} Solver;
在我的.c 文件中
static Solver _solver;
它首先调用一个函数以在网格上进行一些分配,例如
_solver.grid = malloc(....);
//then makes a call to
GS_init(_solver.grid);
GS_init 函数在GS.h 中声明为:
void GS_init(double ***grid);
当我尝试编译时,出现两个错误:
the struct "<unnamed>" has no field "grid"
GS_init(_solver.grid)
^
和
too many arguments in function call
GS_init(_solver.grid)
^
任何想法这里出了什么问题?
【问题讨论】:
-
看到三重指针时会感到害怕。它们有时是个好主意;它们很少是一个好主意。
-
GS.h 是否包含 data.h?从表面上看,如果两个标头都包含在您的“.c”文件的代码中,那么应该没有问题。
-
gs.h 和 data.h 是单独的文件。我已经修改了代码以使用三重指针(3d 数组)并且它运行得更快。现在我正在尝试将我在我的方法中拥有的数据的本地副本移回求解器结构。
-
哦,是的,我明白你现在在说什么了。是的,在 .c 文件中,两者都包含
标签: struct multidimensional-array field