IAR编译duplicate definitions for IAR报错解决办法补充版

在编译文件定义全局变量的时候,编译出现错误,经查是在另一个.c文件里面把我这个声明的变量又重新给赋值了一次,这个是不对的,如果你想定义全局变量的话,或者向调用其他.c文件里面的定义的全局变量的话,那么你在引用的.c文件里面加上extern char num;类似的语句就可以,不能重新给这个变量在定义的时候赋值。

/-------------------------------------------------main.c 声明-------------------------------------------------------------------------------------------

#iniclude “…”

unsigned char Buffer[1000];    //定义了一个1000字节的接收发送缓冲区
unsigned char host_mac_addr[6]=    { 0x00, 0x1e, 0xc9, 0x45, 0x61, 0x9e };
unsigned char mac_addr[6] =     {0x08,0x90,0x90,0x90,0x90,0x90 };//{ 0x52, 0x54, 0x4c, 0x38, 0xf7, 0x42 };
unsigned char ip_addr[4] =         { 192, 168, 0, 21  };

unsigned char host_ip_addr[4] = { 192, 168, 0, 100 };
unsigned int packet_len;            //接收、发送数据包的长度,以字节为单位

int main()

{

return 0;

}

/------------------------------------在get.c调用---------------------------------------------------------------------------------------------------------

#iniclude “…”

extern  unsigned char Buffer[1000];    //定义了一个1000字节的接收发送缓冲区
extern  unsigned char host_mac_addr[6];
extern  unsigned char mac_addr[6] ;
extern  unsigned char ip_addr[4] ;

extern  unsigned char host_ip_addr[4] ;
extern  unsigned int packet_len;            //接收、发送数据包的长度,以字节为单位

void get()

{

}

原文地址:https://www.cnblogs.com/xmphoenix/p/2049538.html