首页 >后端开发 >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