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。

  • 相关阅读:
    事件驱动模型 泽桐
    装饰器 泽桐
    多用户在线FTP程序 泽桐
    gevent协程、select IO多路复用、socketserver模块 改造多用户FTP程序例子 泽桐
    mysql系列学习 泽桐
    mysql练习题 泽桐
    第1章 Python基础 泽桐
    协程 泽桐
    利用统计进行中文分词与词性分析
    js 数字输入控制,保留两位小数
  • 原文地址:https://www.cnblogs.com/kongweisi/p/15175208.html
Copyright © 2011-2022 走看看