Keil中ERROR:MULTIPLE PUBLIC DEFINITIONS的解决

  • 梦梵FLY
  • keil
  • 2023-02-26
比如你要写一个模块,fun.c、fun.h
如果你在这个模块里定义一个内部的全局变量(只在模块内是全局的),那么就直接定义和声明在fun.h中即可。
但是如果你需要一个全局变量,在这个模块被其他地方引用的时候也能奏效的话,那么你应该在fun.c中定义,并在fun.h声明即可。无需在其他文件中声明和定义这个变量。
//fun.c
unsigned char leds[8]=0;

//fun.h
extern unsigned char leds[8]; //.h内不能初始化

extern的意思是,我已经在别的文件里定义了,你在这声明一下不要定义就好。

如果只是在模块内使用,还是除了这一的问题的话,那么就定义成静态的。

//fun.h
static unsigned char table[7]={0x3f ,  ... };

 

声明: 本文章为原创文章如需转载请注明来源(初学者--梦梵FLY).