我正在尝试制作一系列结构,其中每个结构都代表一个天体。
我对结构没有太多的经验,这就是为什么我决定尝试使用它们而不是一堆数组的原因。但是,我不断遇到许多不同的错误。我试图实现在各种线程和StackOverflow上看到的技术(例如C和C中的结构体数组-初始化结构体数组)),但是并不是所有的人都是适用的。
对于那些到目前为止已经读过的人的更多信息:我不需要任何这些都是动态的,我事先知道/定义了所有内容的大小。我还需要将其作为一个全局数组,因为我正在使用几种定义了自变量的方法(即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的简化形式。在这里,我初始化每个结构中的所有变量,只是在以某种方式修改它们之前设置某些变量:
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
文件中。
struct body bodies[n];
之前struct body {}
声明吗?