首頁 >後端開發 >C++ >在 C 中使用靜態變數時,為什麼我會收到「架構 i386 的未定義符號」?

在 C 中使用靜態變數時,為什麼我會收到「架構 i386 的未定義符號」?

Linda Hamilton
Linda Hamilton原創
2024-12-20 19:35:12126瀏覽

Why Am I Getting

使用靜態函式庫編譯時出現錯誤:未定義的符號

在XCode 中編譯C 程式碼時,可能會遇到錯誤訊息「Undefined Symbols for架構i386。」此錯誤通常是由於程式碼中未定義的靜態變數而發生。

問題詳細資訊

在提供的程式碼中,類別Log 有一個在標頭中宣告的靜態變數theString檔案Log.h但未在實作檔案Log .cpp中定義。這會導致連結器在編譯期間無法解析對變數的參考。

要解決此錯誤,必須在實作中定義靜態變數檔。

// Log.cpp
#include "Log.h"
#include <iostream>

string Log::theString;  // Define static here

void Log::method(string arg) {
    theString = "hola";
    cout << theString << endl;
}

附加建議

也建議刪除using namespace std這行;從頭檔案中刪除,因為它會在包含頭檔的地方用std 污染全域命名空間。相反,您應該在使用其物件時明確指定 std 命名空間。

// Log.h
#include <iostream>
#include <string>

class Log {
public:
    static void method(std::string arg);

private:
    static std::string theString;
};

以上是在 C 中使用靜態變數時,為什麼我會收到「架構 i386 的未定義符號」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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