请问:keil c中怎么在一个工程中定义各个文件都能用的全局变量?

contrlfish 2007-11-01 07:53:53
如题---------------------------

请问:keil c中怎么在一个工程中定义各个文件都能用的全局变量?

我是想在一个.c文件中定义一个变量,然后其他的文件中都可以使用这个变量。。。

我在 .h中extern 这个变量,然后在另外要用这个变量的文件中包含这个头文件,但是无效,不知道是为什么?
...全文
1852 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtm695640506 2012-10-12
  • 打赏
  • 举报
回复
用头文件包含
SomethingWrong 2012-10-11
  • 打赏
  • 举报
回复
5楼那个对,要是看不懂的话就用笨办法
在一个文件里定义全局变量在其他文件里用带 extern的再来一遍

tydata 2012-10-11
  • 打赏
  • 举报
回复
5楼正解吧,个人观点,仅供参考
1586874907 2012-10-11
  • 打赏
  • 举报
回复
5楼的定义方法简单,但不是特别清晰,尤其对初学者
aydf1 2012-10-11
  • 打赏
  • 举报
回复
在RFID.C中将声明过的变量都定义了,以后只需包含头文件RFID.H就可以了
Tsy040501 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
在头文件“RFID.H”中这么定义:

#ifdef RFID_GLOBAL
#define RFID_EXT
#else
#define RFID_EXT extern
#endif

RFID_EXT uchar rwdata[66];
RFID_EXT uchar buf[MAX_BUFLEN]; //usb-cupcard cmd rcbuf
RFID_EXT uch……
[/Quote]
补充下:
在RFID.C中将声明过的变量都定义了,以后只需包含头文件RFID.H就可以了
xxxh2012 2012-10-10
  • 打赏
  • 举报
回复
能详细点吗
chendehao958689927 2012-08-20
  • 打赏
  • 举报
回复
五楼正确!!我也是在那学到的!!
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
接分是王道!
W32API 2007-11-20
  • 打赏
  • 举报
回复
5楼正确
ofourme 2007-11-15
  • 打赏
  • 举报
回复
5楼的方法在keilc里貌似不行,可能是编译器的问题,哈哈。
不过那确实是个好方法,我也是在ucos里学的。

6楼的理解还是有点问题,5楼的没错啊。一个是声明,一个是定义。
shen_guang_wu 2007-11-14
  • 打赏
  • 举报
回复
呵呵,条件编译有问题啊?把 “#define RFID_GLOBAL //然后INCLUDE头文件 ”删除了就可以了吧
lbing7 2007-11-13
  • 打赏
  • 举报
回复
#ifdef RFID_GLOBAL
#define RFID_EXT
#else
#define RFID_EXT extern
#endif

好像是不是觉得有点反了?
应该是

#ifndef开头吧???
island0209 2007-11-13
  • 打赏
  • 举报
回复
在头文件“RFID.H”中这么定义:

#ifdef RFID_GLOBAL
#define RFID_EXT
#else
#define RFID_EXT extern
#endif

RFID_EXT uchar rwdata[66];
RFID_EXT uchar buf[MAX_BUFLEN]; //usb-cupcard cmd rcbuf
RFID_EXT uchar receiveBuffer[20]; //usb-rfid-15693 cmd rcbuf
RFID_EXT uchar uid[8];
RFID_EXT uchar err_flg;
RFID_EXT uchar cardtype;

在“RFID.C”文件中定义
#define RFID_GLOBAL //然后INCLUDE头文件
#include "rfid.h"

这样你的RFID.H头文件就可以被任何.C文件引入(包括你的全局变量)。当然你RFID.C中用到的全局变量都要在RFID.H中声明且要加上RFID_EXT 关键字。
这个方法是从UCOS上学来的,详细可以参考UCOS的中文说明。
lbing7 2007-11-01
  • 打赏
  • 举报
回复
那没问题哈...

我经常这么用的...

要不你在弄个main.h
然后在H里面加入extern的声明

在用到这个变量的地址,#INCLUDE一下MAIN.H

这样用我的是没问题的.呵
contrlfish 2007-11-01
  • 打赏
  • 举报
回复
我是在所有的函数外面进行定义,并且没有使用static啦。
唯一不同的,就是这个变量是我在主函数所在的文件中定义的,这会有影响吗?
lbing7 2007-11-01
  • 打赏
  • 举报
回复 1
这个变量必须在所有的函数外面进行定义...

而不是用static进行,static的作用域是本文件

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧