首頁 >後端開發 >C++ >為什麼我的 C 程式碼出現「未定義的靜態變數引用」連結器錯誤?

為什麼我的 C 程式碼出現「未定義的靜態變數引用」連結器錯誤?

Patricia Arquette
Patricia Arquette原創
2024-12-19 03:18:12188瀏覽

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. 刪除不必要的命名空間宣告:

    • 刪除using namespace std;來自頭檔(Log.h)。這被認為是不好的做法,因為它會污染全域命名空間。

透過進行這些更改,連結器將能夠在連結期間找到靜態變數的定義,從而解決「未定義的符號」錯誤。

以上是為什麼我的 C 程式碼出現「未定義的靜態變數引用」連結器錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn