#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 #endif

#ifdef #endif

#ifdef#ifndef#else#endif执行条件编译

#ifdef...#endif作用

关于 #ifdef __cplusplus extern “C“ { #endif

C++中 #ifdef and #endif的使用