现在的位置: 首页 > 综合 > 正文

#define小结

2018年08月26日 ⁄ 综合 ⁄ 共 1065字 ⁄ 字号 评论关闭

这里介绍的define应用主要是在C程序下的。其功能主要有以下几种:

 

一、 对变量及数据类型定义

#define MAXTIME 100

注意,在程序编写中,define语句后并没有 ; 结束符。这一点是非常重要的。经过上述定义后,如果在语句中出现MAXTIME,则程序将其替换为100.

即 #define 名字 替换文本

后续所有出现名字的地方将会被替换成替换文本。通常情况下,#define指令占据一行,替换文本是#define指令尾部所有剩余部分内容。但也可以把一个较长的宏定义分成若干行,但此时必须在尾部加上一个反斜杠符 \ 。

在定义宏中各种情况如下:

//定义宏

#define [MacroName] [MacroValue]

//取消宏

#undef [MacroName]

 

//普通宏

#define PI (3.1415926)

 

二、 对函数的定义

#define forever for( ; ; )

#define MAX(a, b) ((a)>(b)) ? (a) : (b)

但第二种情况下要注意()的添加。在自增或自减中可能会出现错误情况。所以尽量将所有的层次都添加括号()。

 

三、 条件编译

在大规模开发中,特别是跨平台和系统的软件里,define最重要的一项功能就是条件编译

#define        WINDOWS

...........................

...........................

#endif

#define LINUX

...........................

...........................

#endif

可以在编译的时候,通过#define设置编译的环境

为了保证头文件xx.h的内容只被包含一次,则可以将该文件的内容包含如下形式:

#if SYSTEM == SYSV

#define HDR "xx.h"

#elif SYSTEM == BSD

#define HDR"xxx.h"

#elif SYSTEM == MSDOS

#define HDR"xxxx.h"

#else

#define HDR"xxxxx.h"

#endif

 

#include HDR

 

#if !define HDR//或者 #ifndef HDR

#define HDR

// 文件内容放此

#endif

 

 

 

#define宏定义的优点是可以使用#ifdef, #ifndef等来进行逻辑判断。还可以使用#undef来取消宏定义

#typedef的优点在于使用typedef定义的变量类型其作用范围限制在所定义的函数或者文件内(取决于此变量定义的位置),而宏定义则没有这种特性。

2011.4.25

抱歉!评论已关闭.