You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

引用头文件中结构体变量reg报错:undefined reference to `reg'

解决"undefined reference to reg"链接错误

这个错误的核心原因是:你只在头文件里用extern声明了变量reg,但没有在任何C文件中实际定义这个变量。extern只是告诉编译器“这个变量存在于其他地方”,但链接器需要找到变量的实体定义才能完成链接。

修复步骤

  1. 在某个C文件中定义reg变量
    选择一个C文件(比如你的cpu.c,或者专门的全局变量文件如globals.c),添加变量的定义(不要加extern):

    // 在cpu.c中添加这一行,放在#include之后、函数之前
    struct Registers reg;
    

    或者单独创建globals.c文件:

    #include "computer.h"
    struct Registers reg;
    
  2. 确保编译时包含所有相关文件
    如果用单独的globals.c,编译时要把它和cpu.c一起编译,比如:

    gcc cpu.c globals.c -o your_program
    

关键注意事项

  • 头文件里只能放extern声明(extern struct Registers reg;),不要在头文件中定义变量,否则多个C文件包含头文件时会触发“multiple definition”错误。
  • extern的作用是声明变量的存在,而定义变量才会为它分配内存空间,链接器正是需要这个内存分配的实体。

内容的提问来源于stack exchange,提问作者LukeThywalk3r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 10:17:20