我正在尝试建立一系列结构每个结构代表一个天体。
我对结构没有那么多的经验,这就是为什么我决定尝试使用它们而不是一大堆数组的原因。然而,我不断遇到许多不同的错误。我试图实现我在各种线程和 StackOverflow (比如 C 中的结构体数组和 初始化结构数组)上看到的技术,但并非所有技术都适用。
对于那些已经阅读到这里的人,进一步的信息是: 我不需要这些东西是动态的,我事先知道/定义了所有东西的大小。我还需要它是一个全局数组,因为我要在几个不同的方法中访问它,这些方法都有定义的参数(即 GLUT 方法)。
这就是我在头部定义 struct 的方法:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
在定义 struct 的内部之前,我有一个全局变量的列表,其中之一就是 struct 的数组(基本上,如果我说得不够清楚,下面这行就在上面的内容之上) :
struct body bodies[n];
正如你所知道的,n
是我合法定义的东西(即 #define n 1
)。
我在几个不同的方法中使用这个数组,但是最简单、占用空间最少的是 main 的简化形式。在这里,我初始化每个结构中的所有变量,只是为了在以某种方式修改它们之前设置某些变量:
int a, b;
for(a = 0; a < n; a++)
{
for(b = 0; b < 3; b++)
{
bodies[a].p[b] = 0;
bodies[a].v[b] = 0;
bodies[a].a[b] = 0;
}
bodies[a].mass = 0;
bodies[a].radius = 1.0;
}
我当前面临的错误是 nbody.c:32:13: error: array type has incomplete element type
,其中第32行是构造结构数组的地方。
最后一个说明,我说的头是指 int main(void)
之上的空间,但是在同一个 *.c
文件中。