英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3981|回复: 0
打印 上一主题 下一主题

外部变量声明-extern

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-19 00:50:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果在一个 C 程序文件中要使用一些变量但其原型定义写在另外的文件中,那么在本
文件中必须将这些变量声明成“extern”外部类型。例如程序文件code1.c 中有如下定义:
bank1 unsigned char var1, var2; //定义了bank1 中的两个变量
在另外一个程序文件 code2.c 中要对上面定义的变量进行操作,则必须在程序的开头定义:
extern bank1 unsigned char var1, var2; //声明位于bank1 的外部变量

extern的问题(转)
如果要在多个源文件中使用同一个变量,需要用到extern关键字
这个时候要在每个相关的源文件中声明此变量,而且只能在一个文件中不用extern关键字,而其它文件都需要用extern来声明
如果只是几个变量还比较好,要是多了就非常的烦人了
特别是单片机中资源少,用外部变量传递数据在所难免
前几天看了一本操作系统的书,里面提到个小技巧 #define EXTERN extern
刚开始觉得这是多事,后来一看,才知道大有文章
可以把所有的extern变量都放在一个文件里,比如 AllExterns.h
然后在这个文件中加入这么一段
#ifdef FIRSTDEFINE
#define EXTERN
#else
#define EXTERN extern
#endif
然后再用EXTERN来定义变量,即:
EXTERN int gl_a;
EXTERN int gl_b;
在用到这些变量的文件中,只需要加上
#include "AllExterns.h"
如果不用extern关键字,也就是第一次定义这些变量,只需要这样:
#define FIRSTDEFINE
#include "AllExterns.h"
只要保证整个工程中只有一个源文件中使用了#define FIRSTDEFINE就行了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-27 21:18 , Processed in 0.047997 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表