Home > Backend Development > C++ > Why Am I Getting 'Undefined Symbols for Architecture i386' When Using Static Variables in C ?

Why Am I Getting 'Undefined Symbols for Architecture i386' When Using Static Variables in C ?

Linda Hamilton
Release: 2024-12-20 19:35:12
Original
201 people have browsed it

Why Am I Getting

Error: Undefined Symbols When Compiling with Static Library

When compiling C code in XCode, you may encounter the error message "Undefined symbols for architecture i386." This error typically occurs due to undefined static variables within the code.

Problem Details

In the provided code, the class Log has a static variable theString declared in the header file Log.h but is not defined in the implementation file Log.cpp. This results in the linker being unable to resolve the reference to the variable during compilation.

Solution

To resolve this error, you must define the static variable in the implementation file.

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

string Log::theString;  // Define static here

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

Additional Recommendation

It is also recommended to remove the line using namespace std; from the header file as it pollutes the global namespace with std wherever the header is included. Instead, you should explicitly specify the std namespace when using its objects.

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

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

private:
    static std::string theString;
};
Copy after login

The above is the detailed content of Why Am I Getting 'Undefined Symbols for Architecture i386' When Using Static Variables in C ?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template