C++ コンパイル エラーを解決する方法: '関数' の再定義?

王林
リリース: 2023-08-27 14:27:13
オリジナル
1896 人が閲覧しました

解决C++编译错误:\'redefinition of \'function\'\',如何解决?

C コンパイル エラーの解決策: '関数' の再定義、解決方法は?

C は強力なプログラミング言語として、ソフトウェア開発で広く使用されています。ただし、初心者にとってエラーのない C プログラムを作成するのは簡単ではありません。よくあるエラーの 1 つは、関数の再定義エラーである「'関数' の再定義」です。この記事では、このエラーの原因と解決方法について説明します。

エラーの理由:
C プログラムで同じ名前の関数を定義すると、コンパイラは「'関数' の再定義」エラーを報告します。このエラーは通常、次の状況で発生します。

  1. 同じソース ファイル内で同じ関数が複数回定義されています。
  2. 同じ関数が異なるソース ファイルで定義されており、これらのソース ファイルは同じプログラムにリンクされています。

次の例を見てください:

// example.cpp

int add(int a, int b)
{
    return a + b;
}

int add(int a, int b) // 重复定义相同的函数
{
    return a + b;
}

int main()
{
    int result = add(3, 4);
    return 0;
}
ログイン後にコピー

上の例では、同じソース ファイル内で「add」という名前の関数を 2 回定義しています。このプログラムをコンパイルしようとすると、「'add' の再定義」エラーが発生します。

解決策:
関数の再定義エラーを解決するには、主に 2 つの方法があります: 1 つは、同じソース ファイルで同じ関数を複数回定義しないようにすること、もう 1 つは、異なるソース ファイルで同じ関数を定義することです関数では、競合を避けるために関数宣言とヘッダー ファイルを使用します。

  1. 同じソース ファイル内で同じ関数を複数回定義することは避けてください。
// example.cpp

int add(int a, int b)
{
    return a + b;
}

int main()
{
    int result = add(3, 4);
    return 0;
}
ログイン後にコピー

上記のコードにより、関数の再定義エラーが修正されました。関数定義を 1 つだけ保持し、それを main 関数で呼び出します。

  1. 同じ関数を異なるソース ファイルで定義する場合は、関数宣言とヘッダー ファイルを使用します。

まず、example.cpp と add.cpp という 2 つのソース ファイルを作成しましょう。

// add.h

#ifndef ADD_H
#define ADD_H

int add(int a, int b);

#endif
ログイン後にコピー
// add.cpp

#include "add.h"

int add(int a, int b)
{
    return a + b;
}
ログイン後にコピー
// example.cpp

#include "add.h"

int main()
{
    int result = add(3, 4);
    return 0;
}
ログイン後にコピー

上の例では、ヘッダー ファイルと関数宣言を使用して関数の再定義エラーを解決しました。 add.h ヘッダー ファイルでは、add 関数の宣言を定義し、条件付きプリプロセッサを使用して繰り返しの組み込みを回避します。

add.cpp ソース ファイルでは、add 関数の特定の定義を実装します。

最後に、example.cpp ソース ファイルに add.h ヘッダー ファイルをインクルードし、関数の再定義エラーなしで add 関数を使用できるようにします。

概要:
関数の再定義エラーは、C 開発でよくあるエラーの 1 つです。このエラーを回避するには、同じソース ファイルで同じ関数を複数回定義することを避け、関数宣言とヘッダー ファイルを使用して、異なるソース ファイルで同じ関数を定義することによって生じる競合を解決する必要があります。このようにして、高品質でエラーのない C プログラムを作成できます。

以上がC++ コンパイル エラーを解決する方法: '関数' の再定義?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート