Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat 'Simbol Tidak Ditakrifkan untuk Seni Bina i386' Apabila Menggunakan Pembolehubah Statik dalam C ?

Mengapa Saya Mendapat 'Simbol Tidak Ditakrifkan untuk Seni Bina i386' Apabila Menggunakan Pembolehubah Statik dalam C ?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 19:35:12125semak imbas

Why Am I Getting

Ralat: Simbol Tidak Ditakrifkan Semasa Menyusun dengan Pustaka Statik

Apabila menyusun kod C dalam XCode, anda mungkin menghadapi mesej ralat "Simbol tidak ditentukan untuk seni bina i386." Ralat ini biasanya berlaku disebabkan pembolehubah statik yang tidak ditentukan dalam kod.

Butiran Masalah

Dalam kod yang disediakan, Log kelas mempunyai pembolehubah statik theString yang diisytiharkan dalam pengepala fail Log.h tetapi tidak ditakrifkan dalam fail pelaksanaan Log.cpp. Ini menyebabkan pemaut tidak dapat menyelesaikan rujukan kepada pembolehubah semasa penyusunan.

Penyelesaian

Untuk menyelesaikan ralat ini, anda mesti menentukan pembolehubah statik dalam pelaksanaan fail.

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

string Log::theString;  // Define static here

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

Tambahan Syor

Ia juga disyorkan untuk mengalih keluar baris menggunakan ruang nama std; daripada fail pengepala kerana ia mencemarkan ruang nama global dengan std di mana sahaja pengepala disertakan. Sebaliknya, anda harus menyatakan ruang nama std secara eksplisit apabila menggunakan objeknya.

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

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

private:
    static std::string theString;
};

Atas ialah kandungan terperinci Mengapa Saya Mendapat 'Simbol Tidak Ditakrifkan untuk Seni Bina i386' Apabila Menggunakan Pembolehubah Statik dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn