ホームページ >バックエンド開発 >C++ >C コードで「静的変数への未定義の参照」リンカー エラーが発生するのはなぜですか?

C コードで「静的変数への未定義の参照」リンカー エラーが発生するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-19 03:18:12180ブラウズ

Why Does My C   Code Get an

静的変数への未定義の参照: リンク エラーの解決

C コードをコンパイルするときに、変数を参照するときに「未定義のシンボル」エラーが発生することがあります。ヘッダー ファイルで定義された静的変数。このエラーは、リンカーがリンク中に静的変数の定義を見つけられないために発生します。

この例では、ヘッダー ファイル Log.h は静的文字列メンバー theString を宣言しています。ただし、この静的変数の定義が Log.cpp ファイルにありません。この問題を解決するには、次の手順に従います。

  1. CPP ファイルで静的変数を定義します。

    • CPP ファイルへの静的変数(Log.cpp).
    #include "Log.h"
    #include <iostream>
    
    // Define the static variable here
    string Log::theString;
    
    void Log::method(string arg) {
        theString = "hola";
        cout << theString << endl;
    }
  2. 不要な名前空間宣言を削除します:

    • 名前空間 std を使用して削除します。ヘッダー ファイル (Log.h) から。これは、グローバル名前空間を汚染するため、悪い習慣と考えられています。

これらの変更を行うことで、リンカーはリンク中に静的変数の定義を見つけて、 「未定義のシンボル」エラー。

以上がC コードで「静的変数への未定義の参照」リンカー エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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