zoukankan      html  css  js  c++  java
  • 预处理器之 条件编译

      在编译一个程序时,如果我们可以选择某条语句或者某组语句进行翻译或者被忽略,通常显得很方便。只用于调试程序的语句就是很明显的例子。它们不该出现在程序的产品的版本中,但是你可能不想把这些语句从源代码中物理删除,因为如果需要维护性修改时,你可能需要重新调试这个程序,还需要这些语句。

      这是就用到条件编译。使用条件编译,你可以选择代码的一部分是被正常编译还是完全忽略。用于支持条件编译的基本结构是#if指令以及与其匹配的#endif指令。

      #if  constant-expression

          statements

      #endif

      其中constant-expression(常量表达式)由预处理器进行求值,如果它的值是非零值(真),那么statement部分就被正常编译,否则预处理器就安静的删除它们。所谓常量表达式,就是字面值是常量或者由define定义的符号。如果变量在执行前无法获取它的值,那么出现在常量表达式就是非法的,因为编译时不可预测。

    例:#if  DEBUG

            printf(" x=%d    y=%d ",x,y);

    如果这部分需要编译,则使用  #define   DEBUG 1  即可。

    条件编译另一个用途是在编译时选择不同代码部分。#if指令还具有可选的#elif 和 #else ,使用方法如下:

    #if  constant-expression

        statements

    #elif constant-expression

        other  statements...

    #else 

        other  statements...

    #endif

    这里#elif出现的次数可以不限,,每个constant-expression只有当前面有所常量表达式的值都为假时才会被编译。#else也一样。

     

  • 相关阅读:
    2013软考最新大纲
    安卓的第二堂课
    安卓第一堂课
    VS2010的快捷键;VS2012变化的快捷键
    漂亮的表格样式大全
    ASCII说明和ASCII对照表
    Cookie学习笔记
    JavaScript实现功能全集
    1073-成绩排名
    1071-数字的空洞
  • 原文地址:https://www.cnblogs.com/ATMvip/p/3228188.html
Copyright © 2011-2022 走看看