「以前にここで定義したx .... xの再定義」がたくさんあります。このエラーはどういう意味ですか?
各ファイルが1回だけ含まれるように制限する必要があります。これは2つの方法で行うことができます。
1)ヘッダーファイルの先頭に次のように配置します。
#pragma once
または2)コンパイラがそれをサポートしていない場合は、ヘッダーファイルの先頭/末尾に配置します。
#ifndef _MYFILE_H_
#define _MYFILE_H_
...
#endif
MYFILEをファイルの名前に置き換え、...をヘッダーファイルの内容に置き換えます。
このエラーは、ある場所で定義されたシンボルがあり、別の場所で別の定義が行われたことを意味します。
これは、次のような場合に発生する可能性があります。
この最後のケースでは、実際の関数と、使用するプロトタイプがない場合にコンパイラーが想定する「暗黙の宣言」との間に不一致があります。
これらの状況は、次の方法で回避できます。
static
の場合はファイル内で、オブジェクトファイル間で使用されている場合は一意の名前)extern
ステートメントを使用してプロトタイプを宣言する場合は、注意が必要です。適切なヘッダーファイルのプロトタイプを使用することをお勧めします。static
関数の場合はソースファイル内に、他のオブジェクトファイルで使用される場合はヘッダーファイル内に。おそらくヘッダーファイルを2回インクルードしています。ヘッダーファイルが#ifndef
ステートメントで囲まれていることを確認してください。
http://www.fredosaurus.com/notes-cpp/preprocessor/ifdef.html
同じことが私にも起こりました。それは、ヘッダーファイルの代わりに.c/.cppファイル(その中に)を誤ってインクルードしたためです。
それは間違いなくあなたにそのエラーの多くを得るでしょう。