在编译下面代码时出现如下图所示的报错信息:
https://github.com/yangminz/bcst_csapp.git
查看代码感觉可能是不同h头文件有交叉引用的情况。各c文件单独编译应该是没有问题的,但是一起编译链接就会出现上述问题。
可以通过extern关键字实现变量定义唯一性。
src/cpu/register.h文件
reg_t reg; --> extern reg_t reg;
src/disk/elf.h文件
inst_t program[INST_LEN]; --> extern inst_t program[INST_LEN];
同时在code.c文件中增加变量定义:reg_t reg;
src/memory/dram.h文件
uint8_t mm[MM_LEN]; --> extern uint8_t mm[MM_LEN];
dram.c中增加变量定义:uint8_t mm[MM_LEN];
src/memory/instruction.h文件
handler_t handler_table[NUM_INSTRTYPE]; --> extern handler_t handler_table[NUM_INSTRTYPE];
instruction.c文件中增加变量定义:handler_t handler_table[NUM_INSTRTYPE];
然后再次编译通过。