打印

[转帖]写程序的一点心得!

[复制链接]
1801|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
thf2008|  楼主 | 2009-11-8 10:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
全局变量 && 宏定义
★★★★★★★★★★★★
在程序较大的情况下,为了方便阅读和维护。一般会将程序按一定的功能进行分块处理,每个程序块可以写到一个或多个“ .c”文件中;而每个模块要使用到的数据就是全局变量;

全局变量是从它定义的开始,就分配了内存;而且可在整个项目中的各个模块公用的;
这种情况下,就要使用到 exetern 关键字进行定义, 必须在 .C 和 .H 文件中定义。

一般如下定义:
XX.c 文件中定义一个变量:unsigned char disp_flag;   
XX.h 文件中就要这样定义:extern unsigned char disp_flag;
这样才能在各个模块中使用全局变量disp_flag;.............

这种重复的定义很容易导致错误。以下是参照 ucos_II 中的方法,只须在头文件中定义一次。就可以在项目中各个模块使用该全局变量了;  
掌握这种方法后,使用非常方便,灵活。哈哈~!

★★★★★★★★★★★★
在 XX.h 文件中定义内容如下:   
#ifdef _MAIN_C_
    #define global
#else
    #define global extern
#endif
/***********变量定义**********/
global unsigned char dispbuffer[3];
.
.
.
/*在这一段中定义要使用的全局变量,注意:在前面一定记得加上 global,( 也可以是你自己喜欢的
字符串,但是一定要与上面宏定义“#define global  ; #define global extern”  使用的字符串一致;本例中定义了global,那么在定义变量前就加“global”了....)

.............
/***********变量定义**********/
#undef global
/**************************/
#endif







★★★★★★★★★★★★

在项目的其中一个 XX.c 文件中(一般选main.c,个人习惯而已) 定义内容如下:  

#define _MAIN_C_   //   ( 注意这里定义的字符串一定要与 XX.h文件中的第一句
   // “#ifdef _MAIN_C_” 定义的字符口串一致 )
#include "XX.h"       //   包含头文件

void main()
{
     .
     .
     .
}
#endif

★★★★★★★★★★★★

在其它的 .c 文件中, 只要在开头写:
#include "XX.h"      //   包含头文件
……
void xxx()
{
.........
}

这样写之后,所有全局变量只须在“XX.h ”文件中定义一次就可以了/。。。。哈哈,,方便吧!

相关帖子

沙发
linhai2009| | 2009-11-8 10:14 | 只看该作者
好贴,不错,谢谢分享

使用特权

评论回复
板凳
xia_318| | 2009-11-9 16:05 | 只看该作者

使用特权

评论回复
地板
liliang9554| | 2009-11-9 18:09 | 只看该作者
好贴,复制下来收藏了

使用特权

评论回复
5
thf2008|  楼主 | 2009-11-9 18:14 | 只看该作者
:)

使用特权

评论回复
6
贾君鹏子| | 2009-11-9 18:19 | 只看该作者
经验之谈啊

使用特权

评论回复
7
linhai2009| | 2009-11-9 22:41 | 只看该作者
支持支持

使用特权

评论回复
8
itelectron| | 2009-11-10 18:42 | 只看该作者
MARK

使用特权

评论回复
9
wangwo| | 2009-11-10 22:20 | 只看该作者
留印!

使用特权

评论回复
10
shubo909| | 2009-11-22 13:48 | 只看该作者
MARK

使用特权

评论回复
11
beny5566| | 2009-11-22 16:02 | 只看该作者
好东西,
谢谢。

使用特权

评论回复
12
swolf| | 2009-11-22 21:24 | 只看该作者
收藏了,
谢谢

使用特权

评论回复
13
20801233| | 2009-11-22 21:40 | 只看该作者
写的真好,
谢谢。

使用特权

评论回复
14
loveforever| | 2009-11-22 21:48 | 只看该作者
有些地方看不大懂。

使用特权

评论回复
15
juventus9554| | 2009-11-22 23:03 | 只看该作者
这还有看不懂的?这是最基本的啊

使用特权

评论回复
16
hulan1985| | 2009-11-22 23:06 | 只看该作者
呵呵,不要打击别人啊

使用特权

评论回复
17
贾君鹏子| | 2009-11-22 23:09 | 只看该作者
对,慢慢研究,没啥难的

使用特权

评论回复
18
五谷道场| | 2009-11-22 23:13 | 只看该作者
复制下来慢慢看

使用特权

评论回复
19
skypoet| | 2009-12-5 11:47 | 只看该作者
顶,好东西

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

221

主题

2024

帖子

2

粉丝