您的位置:首页 > 其它

条件编译(#ifdef 、#ifndef 、#if)(摘)

2015-08-30 19:47 169 查看
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。经过处理后的代码,将会变的很精短。

   关于预处理命令中的文件包含(#include),宏定义(#define),以下分3种情况:

  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 情况

  #ifndef _XXXX

  ...程序段1...

  #else

  ...程序段2...

  #endif

   这里使用了#ifndef,表示的是if not def。当然是和#ifdef相反的状况(如果没有定义了标识符_XXXX,那么执行程序段1,否则执行程序段2)。例子就不举了。

  3 情况

  #if 常量

  ...程序段1...

  #else

  ...程序段2...

  #endif

   这里表示,如果常量为真(非0,随便什么数字,只要不是0),就执行程序段1,否则执行程序段2。

   这种方法可以将测试代码加进来。当需要开启测试的时候,只要将常量变1就好了。而不要测试的时候,只要将常量变0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: