ホームページ  >  記事  >  バックエンド開発  >  C++ コンパイル エラー:「'関数' への未定義の参照」を解決する方法

C++ コンパイル エラー:「'関数' への未定義の参照」を解決する方法

WBOY
WBOYオリジナル
2023-08-27 08:15:411561ブラウズ

解决C++编译错误:\'undefined reference to \'function\'\',如何解决?

C コンパイル エラーの解決策:「'関数' への未定義の参照。解決方法は?」

1. 問題の説明
C プログラミングを使用する過程で、コンパイル エラーが頻繁に発生します。一般的なエラーの 1 つは、「'関数' への未定義の参照」です。このエラー メッセージは、特定の関数への参照は未定義です。このエラーは通常、リンク段階でコンパイラが関数の定義を見つけられず、コンパイルが失敗するときに発生します。

2. エラーの原因

  1. 関数定義がありません: 関数定義がプログラム内に提供されていないか、関数定義がプログラムに正しく含まれていない可能性があります。 。
  2. 関数宣言エラー: 関数の宣言が実際の定義と矛盾しているか、関数が間違った場所で宣言されています。

3. 解決策
上記のエラーの理由を考慮して、いくつかの一般的な解決策を以下に示します。

  1. 関数定義が欠落しています
    この状況の解決策は簡単で、プログラムの適切な場所に関数の定義を指定するだけです。次の関数宣言があるとします。
// function.h
int sum(int a, int b);
// main.cpp
#include "function.h"

int main() {
    int result = sum(1, 2);
    return 0;
}

上記のコードでは、関数宣言のみを提供し、関数定義は提供しません。この問題を解決するには、関数の定義を適切な場所に提供する必要があります。

// function.cpp
int sum(int a, int b) {
    return a + b;
}

このようにして、コンパイル時にコンパイラーは関数の実際の定義を見つけて、問題を解決できます。 「関数への未定義の参照」の間違いの問題。

  1. 関数宣言エラー
    関数宣言エラーの場合は、関数の宣言と実際の定義の間の不一致が原因である可能性があります。この問題を解決するには、パラメータの型、パラメータの数、関数の戻り値など、関数の宣言と定義が一致しているかどうかを確認する必要があります。

次のコード例を考えてみましょう:

// function.h
float sum(int a, int b); // 函数声明
// function.cpp
int sum(int a, int b) { // 函数定义
    return a + b;
}

上記のコードでは、関数の宣言と定義された戻り値の型が矛盾しており、一方は float 型として宣言され、もう一方はint型として定義されています。これにより、コンパイラは関数の参照と定義を正しく一致させることができなくなり、「'関数' への未定義の参照」エラーが発生します。

この問題を解決するには、定義された戻り値の型と関数の宣言の一貫性を保つだけで済みます。

// function.h
int sum(int a, int b); // 函数声明
// function.cpp
int sum(int a, int b) { // 函数定义
    return a + b;
}

これにより、コンパイラは参照と値を正しく一致させることができます。関数の定義、「'関数' への未定義の参照」エラーを修正しました。

4. 概要
C プログラミングでは、コンパイル エラーは馴染みのないものではありません。一般的なエラーの 1 つは、「'関数' への未定義の参照」です。これは、関数への参照に定義が見つからないことを意味します。この問題を解決するには、関数の定義が提供されているかどうか、および関数の宣言がその定義と一致しているかどうかに注意を払う必要があります。この問題は、関数の定義を正しく提供し、関数の宣言と定義の一貫性を保つことで簡単に解決できます。

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

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