【 C 】条件编译

举报
李锐博恩 发表于 2021/07/15 06:34:57 2021/07/15
【摘要】 当编译一个程序时,如果我们选择某条语句或某组语句进行翻译或者被忽略,常常会显得很方便。只用于调试程序的语句就是一个明显的例子。它们不应该出现在程序的产品版本中,但是你可能并不想把这些语句从源代码中物理删除,因为如果需要一些维护性修改时,你可能需要重新调试这个程序,还需要这些语句。 条件编译(conditional compilation)就是用于实现这个目的。使用条件编译,...

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

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

下面显示了它最简单的语法形式。


      #if constant-expression
       statements
      #endif
  
 

其中, constant-expression(常量表达式)由预处理器进行求值。如果它的值是非零值(真),那么 statements 部分就被正常编译,否则预处理器就会安静地删除它们。

所谓常量表达式,就是它或者是字面值常量(数),或者是一个有#define 定义的符号常量。如果变量在执行期之前无法获得它们的值,那么它们如果出现在常量表达式中就是非法的,因为它们的值在编译时是不可预测的。

条件编译的另一个用途就是编译时选择不同的代码部分。


      #if constant-expression
       statements
      #elif constant-expression
       other statements...
      #else
       other statements...
      #endif
  
 

#elif子句出现的次数可以不限。

 

 

 

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/82714960

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。