8458|10

68

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

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

如题---------------------------

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

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

我在 .h中extern 这个变量,然后在另外要用这个变量的文件中包含这个头文件,但是无效,不知道是为什么?

最新回复

接分是王道!  详情 回复 发表于 2008-5-1 08:31
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个变量必须在所有的函数外面进行定义...

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

 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我是在所有的函数外面进行定义,并且没有使用static啦。
唯一不同的,就是这个变量是我在主函数所在的文件中定义的,这会有影响吗?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
那没问题哈...

我经常这么用的...

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

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

这样用我的是没问题的.呵
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
本公司专业承接PCB印制线路板厂家。主要生产单,双以及多层线路板,盲孔,高频板等。最小孔径0.15mm,是小线距0.1mm. 表面处理:防氧化,镀金,镀锡.无铅工艺等等.质量保证,交货及时.最快24小时交货,月产量1.2万个平方米.本企业已经过ISO9000:2000/ISO14001质量休系/环保体系国际认证和UL认证.以及欧洲环保认证(ROHS认证).双赢互利是我们的一贯经营理念。我们期盼与业内朋友放眼世界、展望未来、携手并进、齐享高科技的结晶,共创辉煌! (24小时提供PCB相关技术支持!欢迎您与我们联系)
联系人:萧先生
深圳市奔强电路有限公司 www.szbq168.com
TEL:0755-29606209    13798334626
MSN:xhg26270001pcb@hotmail.com
SKYPE:LTDLFPCB      QQ:426617608
邮箱:BQPCB@VIP.163.COM
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

6
 
在头文件“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的中文说明。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

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

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

#ifndef开头吧???
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
呵呵,条件编译有问题啊?把  “#define     RFID_GLOBAL   //然后INCLUDE头文件 ”删除了就可以了吧
 
 
 

回复

121

帖子

0

TA的资源

一粒金砂(中级)

9
 
5楼的方法在keilc里貌似不行,可能是编译器的问题,哈哈。
不过那确实是个好方法,我也是在ucos里学的。

6楼的理解还是有点问题,5楼的没错啊。一个是声明,一个是定义。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
5楼正确
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

11
 
接分是王道!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表