股票

keil C 中全局变量的使用

今天碰到keil C编译总是提示“MULTIPLE PUBLIC DEFINITIONS”,即全局变量重复定义。全部文件搜索了一遍,发现只在头文件定义了一次,就是多引用了几次,感到很是奇怪。网上查了一下,才知道全局变量在keil中不是随便引用的。

要想正确编译,有两种方法:

一是在.c文件中定义,其余的.c文件使用的时候用extern定义一次即可。

例如 A.c中定义

uint16_t count; // 此处定义

B.c

extern uint16_t count; //此处声明为外部定义,并引用

第二种方法是

A.c中定义

uint16_t count; // 此处定义

A.h中声明

extern uint16_t count; //此处声明,一定要加extern

B.c中引用

#include “A.h” // 这样可以直接引用

推荐用第二种方法,适用于多文件引用,并便于管理,必须需要修改文件类型的时候只需要修改两处就行了。

打赏
原文链接:,转发请注明来源!

发表评论