私は各構造体が私のクラスで作業している問題の天体を表す構造体の配列を作成しようとしています。構造体に関する多くの経験はありません。なぜなら、配列全体の代わりにそれらを使用しようと決心したからです。しかし、技術を実装しようとしたにもかかわらず、さまざまなエラーにぶち当たっています。私は様々なスレッドやstackoverflow(例えば、Array of structs in CとC - initialize array of structs)で見たことがありますが、それらのすべてが該当するわけではないので、私はそれを行う方法を完全にコピーすることができませんでした。私が何をしようとしているかを示す前に、ちょうど警告をする前に、あまりにも長い間目が覚めてから寝る必要があるので、コメント/質問/私は本当にこれを残念に思っていますが、忙しい一日を過ごしてこの問題を数時間働いた後、私は本当に疲れました。Cでどのように構造体の配列を作成しますか?
これまで読んでいる人のための詳しい情報:私はこれを動的にする必要はありません。私はすべてのサイズを事前に知っています。グローバルな配列(gaspGLOBAL VARIABLES)が必要です。これは、引数(GLUTメソッド)を定義したいくつかの異なるメソッドでこれを呼び出すためです。
これは私が私のヘッダーに構造体を定義しています方法です:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
私は構造体の内部を定義する前に、私は定義しています他のグローバル変数のリストを持っており、それらの1
struct body bodies[n];
だけ知っているので、n
は私がきたものです。(私は曇って話すにはあまりにも不明瞭であることだ場合は、以下の行は、上記のものの上にある、基本的には)この構造体の配列です正当に定義されている(すなわち#define n 1
)。
私はいくつかの異なる方法でこの配列を使用しますが、最も簡単で最小のスペースを消費するものは、私が各構造体のすべての変数を初期化する単純な形式です。いくつかの方法でそれらを変更します。私は直面しています
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;
}
現在のエラーは、私は構造体の配列を作っているところのライン32がどこにあるnbody.c:32:13: error: array type has incomplete element type
です。
あなたが与えることを約束してくれてありがとうございました。私は、遅くとも12時間後にお返事することを約束します。
最後の明確化の1つは、ヘッダーによって、int main(void)
の上のスペースを意味しますが、同じ* .cファイル内です。残り
後
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
へ
まあ、それは私のためにうまくいきます。 'struct body {}'宣言の前に 'struct body bodies [n];'を宣言していませんか? – Jack