社区
单片机/工控
帖子详情
请问:keil c中怎么在一个工程中定义各个文件都能用的全局变量?
contrlfish
2007-11-01 07:53:53
如题---------------------------
请问:keil c中怎么在一个工程中定义各个文件都能用的全局变量?
我是想在一个.c文件中定义一个变量,然后其他的文件中都可以使用这个变量。。。
我在 .h中extern 这个变量,然后在另外要用这个变量的文件中包含这个头文件,但是无效,不知道是为什么?
...全文
1852
17
打赏
收藏
请问:keil c中怎么在一个工程中定义各个文件都能用的全局变量?
如题--------------------------- 请问:keil c中怎么在一个工程中定义各个文件都能用的全局变量? 我是想在一个.c文件中定义一个变量,然后其他的文件中都可以使用这个变量。。。 我在 .h中extern 这个变量,然后在另外要用这个变量的文件中包含这个头文件,但是无效,不知道是为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的作用域是本文件
韦东山FreeRTOS入门与
工程
实践
之所以选择最小系统板,而不是把所有模块都放在
一个
整体的电路板上,目的如下: 低成本尝试:嵌入式软件开发并不一定适合你,可以购买最小系统板进行体验、及时放弃 按需购买:用到再买,讲究
一个
性价比
Ubuntu和
keil
下的
全局变量
、局部变量、堆、栈
文章目录一、
全局变量
&局部变量1.1
全局变量
1.2局部变量1.3差别1.3.1作用域不同1.3.2内存存储方式不同1.3.3生命期不同1.3.4使用方式不同二、堆&栈2.1stm32
中
的堆栈2.2程序的内存分配三、stm32数据的存储位置3.1RAM3.2ROM四、Ubuntu下编程验证4.1代码4.2编译运行五、stm32cubemx下编译验证5.1创建
工程
5.2修改main.c函数5.3编译及结果5.4结果展示六、参考 一、
全局变量
&局部变量 1.1
全局变量
在所有函数外部
定义
的
外部函数的调用与其它源
文件
全局变量
的访问(以C51矩阵键盘为例)
要求 利用
keil
4软件搭建好实验环境; P3口请勿外接任何设备、杜邦线等,否则会影响实验效果; 实现分别按下实验板矩阵键盘上的16个按键,数码管显示不同的数值; 依照实验参考程序,将delay()函数与leddata[]数组保存在
一个
新建的C源
文件
中
,将这个新建的C源
文件
添加到
工程
中
。通过调用外部函数的方法调用delay()函数,通过访问
全局变量
的方式访问leddata[]数组。
keil
工程
中
的两个源
文件
会通过编译程序分别编译生成两个目标
文件
(.obj),目标
文件
和库
文件
(.lib)再通
MDK-
keil
中
.map
文件
解读
在
Keil
中
编译
工程
成功后,在下面的Bulid Ouput窗口
中
会输出下面这样一段信息:Program Size: Code=6320 RO-data=4864 RW-data=44 ZI-data=1636 代表的意思:Code :是程序
中
代码所占字节大小RO-data :程序
中
所
定义
的指令和常量大小 (个人理解 :Read Only)RW-data :程序
中
已初始化的变量大小 (个人理...
Keil
综合(03)map
文件
全解析
相关标题:
Keil
map
文件
内存分布
文件
0、写在前面 相信有较大项目开发经验的朋友都曾遇到内存溢出的问题,那么大家都是如何分析这类问题的呢?大家遇到HardFault_Handler 有对map分析过吗? 首先讲述一下关于map在MDK-ARM
中
的配置。其实,在MDK-ARM
中
,我们可以根据自己的情况(不同配置),在map
文件
中
输出对应...
单片机/工控
27,375
社区成员
28,769
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章