问题描述
在task.c中,为了使用在gprs.c中声明的变量,包含头文件#include “gprs.h”,编译出现error。
Error: L6200E: Symbol g_DataPacketID multiply defined (by gprs.o and task.o)
原因
两个.c文件都调用gprs.h的变量,导致gprs.h中的变量被重复定义。
解决
1.在gprs.c中声明变量(结构体/宏);
uint32_t g_DataPacketID = 0;
2.在gprs.h中对其进行外部引用;
extern uint32_t g_DataPacketID;
3.如何确定是哪一个变量出现了问题:
Error: L6200E: Symbol g_DataPacketID multiply defined (by gprs.o and task.o)
加粗的变量g_DataPacketID即是需要修改的变量
4.如何确定文件
Error: L6200E: Symbol g_DataPacketID multiply defined (by gprs.o and task.o)
加粗的即是都调用这个变量的文件