引用头文件中结构体变量reg报错:undefined reference to `reg'
解决"undefined reference to
reg"链接错误 这个错误的核心原因是:你只在头文件里用extern声明了变量reg,但没有在任何C文件中实际定义这个变量。extern只是告诉编译器“这个变量存在于其他地方”,但链接器需要找到变量的实体定义才能完成链接。
修复步骤
在某个C文件中定义
reg变量
选择一个C文件(比如你的cpu.c,或者专门的全局变量文件如globals.c),添加变量的定义(不要加extern):// 在cpu.c中添加这一行,放在#include之后、函数之前 struct Registers reg;或者单独创建
globals.c文件:#include "computer.h" struct Registers reg;确保编译时包含所有相关文件
如果用单独的globals.c,编译时要把它和cpu.c一起编译,比如:gcc cpu.c globals.c -o your_program
关键注意事项
- 头文件里只能放
extern声明(extern struct Registers reg;),不要在头文件中定义变量,否则多个C文件包含头文件时会触发“multiple definition”错误。 extern的作用是声明变量的存在,而定义变量才会为它分配内存空间,链接器正是需要这个内存分配的实体。
内容的提问来源于stack exchange,提问作者LukeThywalk3r
相关产品推荐
相关产品推荐

