ホームページ  >  記事  >  バックエンド開発  >  C++ コンパイル エラー: 複数の定義があります。それらを変更するにはどうすればよいですか?

C++ コンパイル エラー: 複数の定義があります。それらを変更するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-08-21 23:07:501341ブラウズ

C プログラミングでは、「複数定義」のコンパイル エラーがよく発生します。これは、プログラム内に同じ名前の変数、関数、またはオブジェクトが複数定義されているためです。これらの変数、関数、またはオブジェクトはコンパイラーによってすべて同じであると見なされるため、コンパイラーは「複数定義」エラーを生成します。

実際のプログラミングでは、このような問題をどのように回避、解決すればよいでしょうか?

  1. ヘッダー ファイルの使用

C では、再利用される関数や変数をヘッダー ファイルに定義して、複数のファイルでの使用を避けることができます。関数または変数を繰り返し実行します。これらの関数または変数を使用する場合、ヘッダー ファイルをインクルードするだけで済みます。

サンプルコード:

//header.h

ifndef HEADER_H

define HEADER_H

int add(int a, int b );

endif

//source1.cpp

include "header.h"

int add(int a, int b){

return a + b;

}

//source2.cpp

include "header.h"

int add(int a, int b){

return a - b;

}

このサンプルコードでは、ヘッダーファイル「header.h」を定義し、その中に関数「add」を定義します。 2 つのソース ファイル「source1.cpp」と「source2.cpp」で、それぞれ「add」関数の実装を定義します。これら 2 つのソース ファイルをコンパイルすると、コンパイラは「add」関数の呼び出しをヘッダー ファイル内の定義にポイントするため、「複数の定義」エラーが回避されます。

  1. 静的キーワードを使用する

C では、「静的」キーワードを使用して変数または関数を「静的」としてマークし、複数のファイルでの定義の繰り返しを避けることができます。

サンプルコード:

//source1.cpp
static int num;

//source2.cpp
static int num;

# # このサンプルコードでは、2つのソースファイルにそれぞれ静的変数「num」を定義しています。 「static」キーワードにより、コンパイラは「複数定義」エラーを引き起こすことなく、これら 2 つの変数を 2 つの異なる変数として扱います。

    ネームスペースの使用
C では、ネームスペースを使用して、変数、関数、またはオブジェクトの繰り返し定義を避けることができます。

サンプル コード:

//source1.cpp

namespace A{

int num;

}

//source2.cpp

namespace A {

int num;

}

このサンプル コードでは、2 つのソース ファイルに同じ名前空間「A」を定義し、その名前空間に同じ変数「num」を定義しました。名前空間は名前の競合の問題を解決するため、コンパイラーは「複数定義」エラーを報告しません。

要約すると、ヘッダー ファイル、静的キーワード、名前空間を使用することで、変数、関数、またはオブジェクトの繰り返しの定義を避けることができます。実際の開発では、コンパイルエラーとデバッグ時間をできる限り減らすために、ニーズに応じて適切な方法を選択し、特定のコーディング標準に従う必要があります。

以上がC++ コンパイル エラー: 複数の定義があります。それらを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。