我试图制作一个 struct 数组,每个 struct 代表一个天体.
我没有那么多使用 struct 的经验,这就是为什么我决定try 使用它们,而不是一大堆array.然而,我不断地遇到许多不同的错误.我已经try 实现了我在各种线程和StackOverflow(比如Array of structs in C和C - initialize array of structs)上看到的技术,但是并不是所有的技术都适用.
对于那些已经阅读了本文的读者,我不需要任何动态信息,我预先知道/定义了所有内容的大小.我还需要它是一个全局数组,因为我在几个不同的方法中访问它,这些方法都定义了参数(即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的简化形式.在这里,我初始化每个 struct 中的所有变量,只是为了在以某种方式修改变量之前确定它们:
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行是我生成 struct 数组的位置.
最后一点澄清,我所说的标题指的是int main(void)
以上的空格,但在相同的*.c
文件中.