我正在尝试制作一个结构数组,其中每个结构代表一个天体。
我对结构没有太多经验,这就是为什么我决定尝试使用它们而不是一大堆数组的原因。但是,我不断遇到许多不同的错误。我试图实现我在各种线程和 StackOverflow 上看到的技术(例如Array of structs in C和C - initialize array of structs),但并非所有这些技术都适用。
对于那些已经读到这里的人的更多信息:我不需要任何这些都是动态的,我事先知道/定义了所有内容的大小。我还需要它是一个全局数组,因为我在几个不同的方法中访问它,这些方法已经定义了参数(即 GLUT 方法)。
这就是我在标题中定义结构的方式:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
在定义结构的内部之前,我有一个我正在定义的其他全局变量的列表,其中一个是这个结构的数组(基本上,如果我在我的模糊发言中太不清楚,下面的行在上面的东西之上):
struct body bodies[n];
正如你所知,n
这是我合法定义的东西(即#define n 1
)。
我在几种不同的方法中使用这个数组,但最简单且占用空间最少的方法是我的 main.js 的简化形式。在这里,我初始化每个结构中的所有变量,只是为了在我以某种方式修改它们之前设置变量:
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
文件中。