请高手赐教c语言预处理指令的#define的一个问题。

[复制链接]
 楼主| wchangtao 发表于 2007-10-30 22:03 | 显示全部楼层 |阅读模式
各位高手,实在不得已问一下,我找遍了资料也没找到。 在uc/osII中,有这么一句#define OS_CPU_GLOBALS。 还有在uc/osII的OS_CPU.H中有:
#ifdef  OS_CPU_GLOBALS
#define OS_CPU_EXT
#else
#define OS_CPU_EXT  extern
#endif
#define 为什么只有一个参数?只有一个参数何意?请赐教,小弟不胜感激。
gunaaaa 发表于 2007-10-31 20:59 | 显示全部楼层

定义为空

db10 发表于 2007-10-31 22:39 | 显示全部楼层

呵呵

#ifdef  OS_CPU_GLOBALS
#define OS_CPU_EXT
#else
#define OS_CPU_EXT  extern
#endif

说这个还要从开始用这个说起,比较罗嗦。

如我现在有A.C,B.C,A.H三个文件
在A.H中有定义:
#ifdef  OS_CPU_GLOBALS
#define OS_CPU_EXT
#else
#define OS_CPU_EXT  extern
#endif

OS_CPU_EXT int a;

现在A.c中使用:
#define OS_CPU_GLOBALS
#include A.H
 a=1;

如果在B.c中使用:
#include A.H
则也可以直接使用 a=2;

这样用起来很方便,每次加上#include A.H后就可以直接使用A.H所有变量

如果还有不明,请仔细想想再来聊,呵呵
soso 发表于 2007-11-1 08:15 | 显示全部楼层

仔细想想不难

   这样设计的好处是,一个项目的诸多*.c文件共用一个*.h文件,让文档结构清晰,不过唯一的坏处是增加了编译器编译时间。
ayb_ice 发表于 2007-11-1 08:25 | 显示全部楼层

主要用于变量声明

mannerfh 发表于 2007-11-5 08:59 | 显示全部楼层

为了

为了不重复包函文件或变量对吧
 楼主| wchangtao 发表于 2007-11-5 11:21 | 显示全部楼层

多谢db10

多谢多谢,看明白了!多谢各位帮忙!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部