又找到一篇很好的文档,放到帖子上供大家查看。
#ifdef,#else,#endif,#if 用法详解
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,
先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变
的很精短。
关于预处理命令中的文件包含(#i nclude),宏定义(#dene),书上已经有了详细的说明,在这里
就不详述了。这里主要是对条件编译(#ifdef,#else,#endif,#if 等)进行说明。以下分 3 种情况:
1:情况 1:
#ifdef _XXXX
...程序段 1...
#else
...程序段 2...
#endif
这表明如果标识符_XXXX 已被#dene 命令定义过则对程序段 1 进行编译;否则对程序段 2 进行编译。
例:
#dene NUM
.............
.............
.............
#ifdef NUM
printf("之前 NUM 有过定义啦!:) ");
#else
printf("之前 NUM 没有过定义!:( ");
#endif
}
如果程序开头有#dene NUM 这行,即 NUM 有定义,碰到下面#ifdef NUM 的时候,当然执行第一个
printf。否则第二个 printf 将被执行。
我认为,用这种,可以很方便的开启/关闭整个程序的某项特定功能。
2:情况 2:
#ifndef _XXXX
...程序段 1...
#else
...程序段 2...
#endif
这里使用了#ifndef,表示的是 if not def。当然是和#ifdef 相反的状况(如果没有定义了标识符
_XXXX,那么执行程序段 1,否则执行程序段 2)。
3:情况 3:
#if 常量
...程序段 1...
#else
...程序段 2...
评论0
最新资源