首页 >后端开发 >C++ >为什么我的 C 代码出现'未定义的静态变量引用”链接器错误?

为什么我的 C 代码出现'未定义的静态变量引用”链接器错误?

Patricia Arquette
Patricia Arquette原创
2024-12-19 03:18:12180浏览

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