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也一样。

     

  • 相关阅读:
    oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 转
    linux rm删除含有特殊符号目录或者文件
    Linux下安装SVN(Subversion)
    linux还原svn
    linux 备份svn
    Linux下Tomcat重新启动
    Linux下rz,sz与ssh的配合使用
    深度分析Linux下双网卡绑定七种模式
    Ubuntu 12.04 安装Scrapy爬虫框架
    maven 添加本地jar
  • 原文地址:https://www.cnblogs.com/ATMvip/p/3228188.html
Copyright © 2011-2022 走看看