我是靠谱客的博主 兴奋灰狼,最近开发中收集的这篇文章主要介绍C++条件编译#ifdef #else,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一般情况下,在进行编译时对源程序中的每一行都要编译。但是有时希望程序中某一部分内容只在满足一定条件时才进行编译,也就是指定对程序中的一部分内容进行编译的条件。如果不满足这个条件,就不编译这部分内容。这就是“条件编译”。

有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。

条件编译命令常用的有以下形式:
1) #ifdef 标识符
程序段1
#else
程序段2
#endif

它的作用是当所指定的标识符已经被#define命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。#endif用来限定#ifdef命令的范围。其中#else部分也可以没有。

2) #if 表达式
程序段1
#else
程序段2
#endif

它的作用是当指定的表达式值为真(非零)时就编译程序段1,否则编译程序段2。可以事先给定一定条件,使程序在不同的条件下执行不同的功能。

【例4.16】在调试程序时,常常希望输出一些所需的信息,而在调试完成后不再输出这些信息,可以在源程序中插入条件编译段。下面是一个简单的示例。

  1. #include <iostream>
  2. using namespace std;
  3. #define RUN //在调试程序时使之成为注释行
  4. int main( )
  5. {
  6.    int x=1, y=2, z=3;
  7.    #ifndef RUN  //本行为条件编译命令
  8.    cout<<“x=”<<x<<“, y=”<<y<<“, z=”<<z<<n;  //在调试程序时需要输出这些信息
  9.    #endif //本行为条件编译命令
  10.    cout<<“x*y*z=”<<x*y*z<<endl;
  11. }

第3行用#define命令的目的不在于用RUN代表一个字符串,而只是表示已定义过RUN,因此RUN后面写什么字符串都无所谓,甚至可以不写字符串。在调试程序时去掉第3行(或在行首加//,使之成为注释行),由于无此行,故未对RUN定义,第6行据此决定编译第7行,运行时输出x,y,z的值,以便用户分析有关变量当前的值。运行程序输出:
x=1, y=2, z=3
x*y*z=6
在调试完成后,在运行之前,加上第3行,重新编译,由于此时RUN已被定义过,则该cout语句不被编译,因此在运行时不再输出x,y,z的值。运行情况为:
x*y*z=6

最后

以上就是兴奋灰狼为你收集整理的C++条件编译#ifdef #else的全部内容,希望文章能够帮你解决C++条件编译#ifdef #else所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部