全局宏定义_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > 全局宏定义

全局宏定义

 2010/12/23 8:03:23  东边日出西边雨  http://songpengfei.javaeye.com  我要评论(0)
  • 摘要:首先我们要理解定义和声明的区别,举个常见的例子,比如有一个common.c文件中有这样一句话intvar=7;然后其对应的common.h文件中有这样一句:intvar;那么上面一句叫做“定义”,下面一句叫“声明”。定义为变量分配了存储空间,而声明没有。声明可有多处,而定义只能在一处.声明不能做初始化.下面是网友的话:声明是告诉编译器“我存在!”。定义是告诉编译器“我是干什么的!”。就象你去图书馆声明:我们图书馆里有这本书。定义:书的内容在ucos2操作系统源码中,出现了全局宏定义这个东西
  • 标签:全局 宏定义

????? 首先我们要理解定义和声明的区别,举个常见的例子,比如有一个common.c文件中有这样一句话

?

                                                   int var = 7;

?然后其对应的common.h文件中有这样一句:

                                  int var;

?那么上面一句叫做“定义”,下面一句叫“声明”。

定义为变量分配了存储空间,而声明没有。

声明可有多处,而定义只能在一处.声明不能做初始化.

?

下面是网友的话:

?

声明是告诉编译器“我存在!”。定义是告诉编译器“我是干什么的!”。

就象你去图书馆
声明:我们图书馆里有这本书。
定义:书的内容

?

??? 在ucos2操作系统源码中,出现了全局宏定义这个东西,虽然初学起来有点困难,一但掌握,写起程序来会更灵活。

一个庞大的程序会有不少的全局变量存在,为了使代码整洁,将全局变量定义在了一个文件中,比如在common.c中。

#include "common.h"

int a = 10;
char buf[50] = "china";

?

a和buf就是全局变量。在common.h中对两个变量进行了声明,如下:

#ifndef COMMON_H_INCLUDED
#define COMMON_H_INCLUDED

#define OS_COMMON
int a;
char buf[50];

#endif // COMMON_H_INCLUDED

?

然后我如果想在main.c文件中使用他们,怎么办,可以直接用extern int a;声明外部变量,就可以用。也可以#include

“commmon.h” 然后就可以直接用了。在没有其他文件的干预下两种方法都可以,没有任何问题。但是,如果工程很庞大,main.c包含了若干个(很多个)头文件

//main.c

#include "a.h"
#include "b.h"
#include "c.h"
#include "d.h"

?

你知道这些模块中有没有包含过common.h呢。如果包含了,那么再extern int a;就会出错。

?

?

?

?

发表评论
用户名: 匿名