博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
预处理器之 条件编译
阅读量:4360 次
发布时间:2019-06-07

本文共 822 字,大约阅读时间需要 2 分钟。

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

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

  #if  constant-expression

      statements

  #endif

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

例:#if  DEBUG

        printf(" x=%d    y=%d\n",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也一样。

 

 

 

转载于:https://www.cnblogs.com/ATMvip/p/3228188.html

你可能感兴趣的文章
绑定 前台
查看>>
由当前日期计算相应的周一和周日
查看>>
Silverlight Excel Release process
查看>>
Python(xlrd、xlwt模块)操作Excel实例(一)
查看>>
ZOJ Monthly, November 2012 - G - Gao The Sequence
查看>>
react dnd demo2
查看>>
洛谷——P1896 [SCOI2005]互不侵犯
查看>>
Java之String
查看>>
20155212 2017-2018-1 《信息安全系统设计》第7周学习总结
查看>>
新手C#ListView使用记录2018.08.03
查看>>
1028: 可乐(2018年中南大学研究生复试机试题 )
查看>>
珍藏的最全的windows操作系统快捷键
查看>>
【DBAplus】SQL优化:一篇文章说清楚Oracle Hint的正确使用姿势
查看>>
二叉树结点删除操作
查看>>
图论-单源最短路-SPFA算法
查看>>
转换文件的字符集
查看>>
prometheus + grafana安装部署(centos6.8)
查看>>
Redis和Memcached的区别【转】
查看>>
VMware: Deploy multiple VM’s from template with PowerCLI
查看>>
Cascaded pose regression
查看>>