zoukankan      html  css  js  c++  java
  • 条件编译

    转载:https://bbs.csdn.net/topics/210046082

    预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。
       关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明。以下分3种情况:
      1:情况1:
      #ifdef _XXXX
      ...程序段1...
      #else
      ...程序段2...
      #endif
       这表明如果标识符_XXXX已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。
      例:
      #define NUM
      .............
      .............
      .............
      #ifdef NUM
       printf("之前NUM有过定义啦!:) ");
      #else
       printf("之前NUM没有过定义!:( ");
      #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。

  • 相关阅读:
    gridview展示行号
    DateEdit如果开启Vista模式并显示日期+时间模式
    DevExpress GridView 添加和设置右键菜单
    C# WinForm实现粘贴图片到PictureBox及复制PictureBox中的图片
    dll反编译工具(ILSpy)的使用
    Dev的双击Gridview的DoubleClick
    SQL Server日期时间格式转换字符串详解
    LabelControl文本居中显示
    C# winform 判断click事件点击的是左键还是右键
    Winform窗体状态的判断及调用打开的窗体的方法
  • 原文地址:https://www.cnblogs.com/kongweisi/p/15175208.html
Copyright © 2011-2022 走看看