报错打印显示“a变量在def.h中多重定义了”,又说“第一次定义是在a变量在def.h文件中”。为什么我明明没有重复定义这些变量,还会报错呢?
仔细看这两行报错的最前面,显示是在C、D这两个不同的.o文件中的,就是说C.c 和D.c文件都include了def.h,它们各自编译成C.o和D.o文件时,都定义了def.h中的a变量,因此,造成了多重定义。
修改方法
1.我这里发现C、D文件中的D文件本次开发中不需要用到,就删除D文件即可解决
2.还可以将变量定义到C.c中,D.c中用extern
3.如果还不行,建议到该文件编译目录下先make clean一把再编译试试