C プログラミングでは、「複数定義」のコンパイル エラーがよく発生します。これは、プログラム内に同じ名前の変数、関数、またはオブジェクトが複数定義されているためです。これらの変数、関数、またはオブジェクトはコンパイラーによってすべて同じであると見なされるため、コンパイラーは「複数定義」エラーを生成します。
実際のプログラミングでは、このような問題をどのように回避、解決すればよいでしょうか?
C では、再利用される関数や変数をヘッダー ファイルに定義して、複数のファイルでの使用を避けることができます。関数または変数を繰り返し実行します。これらの関数または変数を使用する場合、ヘッダー ファイルをインクルードするだけで済みます。
サンプルコード:
//header.h
int add(int a, int b );
//source1.cpp
int add(int a, int b){
return a + b;
}
//source2.cpp
int add(int a, int b){
return a - b;
}
このサンプルコードでは、ヘッダーファイル「header.h」を定義し、その中に関数「add」を定義します。 2 つのソース ファイル「source1.cpp」と「source2.cpp」で、それぞれ「add」関数の実装を定義します。これら 2 つのソース ファイルをコンパイルすると、コンパイラは「add」関数の呼び出しをヘッダー ファイル内の定義にポイントするため、「複数の定義」エラーが回避されます。
C では、「静的」キーワードを使用して変数または関数を「静的」としてマークし、複数のファイルでの定義の繰り返しを避けることができます。
サンプルコード:
//source1.cpp
static int num;
//source2.cpp
static int num;
namespace A{
int num;}//source2.cpp
namespace A {
int num;}このサンプル コードでは、2 つのソース ファイルに同じ名前空間「A」を定義し、その名前空間に同じ変数「num」を定義しました。名前空間は名前の競合の問題を解決するため、コンパイラーは「複数定義」エラーを報告しません。 要約すると、ヘッダー ファイル、静的キーワード、名前空間を使用することで、変数、関数、またはオブジェクトの繰り返しの定義を避けることができます。実際の開発では、コンパイルエラーとデバッグ時間をできる限り減らすために、ニーズに応じて適切な方法を選択し、特定のコーディング標準に従う必要があります。
以上がC++ コンパイル エラー: 複数の定義があります。それらを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。