#ifdef #endif
Posted haliofwu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#ifdef #endif相关的知识,希望对你有一定的参考价值。
这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明。以下分3种情况:
1:情况1:
#ifdef _XXXX
...程序段1...
#else
...程序段2...
#endif
这表明如果标识符_XXXX已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。
例:
#define NUM
.............
.............
.............
#ifdef NUM
printf("之前NUM有过定义啦!:) \\n");
#else
printf("之前NUM没有过定义!:( \\n");
#endif
如果程序开头有#define 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...
#endif
这里表示,如果常量为真(非0,随便什么数字,只要不是0),就执行程序段1,否则执行程序段2。
我认为,这种方法可以将测试代码加进来。当需要开启测试的时候,只要将常量变1就好了。而不要测试的时候,只要将常量变0。
最近在用C语写一些程序,发现#ifdef,#else,#endif和#ifndef,#else,#endif在UCOS-II中有大量的应用,于是到网上查了一些相关的解释.#ifdef的用法灵活使用#ifdef指示符,我们可以区隔一些与特定头文件、程序库和其他文件版本有关的代码。 代码举例:新建define.cpp文件
#include "iostream.h"
int main()
#ifdef DEBUG
cout<< "Beginning execution of main";
#endif
return 0;
运行结果为:Press any key to continue
改写代码如下:
#include "iostream.h"
#define DEBUG
int main()
#ifdef DEBUG
cout<< "Beginning execution of main";
#endif
return 0;
运行结果为:Beginning execution of main Press any key to continue
更一般的情况是,#define语句是包含在一个特定的头文件中。 比如,新建头文件head.h,在文件中加入代码:
#ifndef DEBUG #define DEBUG #endif
而在define.cpp源文件中,代码修改如下: #include "iostream.h"
#include "head.h"
int main()
#ifdef DEBUG
cout<< "Beginning execution of main";
#endif
return 0;
运行结果如下:Beginning execution of main Press any key to continue
结论:通过使用#ifdef指示符,我们可以区隔一些与特定头文件、程序库和其他文件版本有关的代码。
以上是关于#ifdef #endif的主要内容,如果未能解决你的问题,请参考以下文章
#ifdef#ifndef#else#endif执行条件编译