C++条件编译

条件编译:

一般情况下,源程序中所有的行都参加编译。但有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件,这就是“条件编译”(conditional compile)。

常用形式:

条件编译命令常用的有以下形式:

(1)

#ifdef 标识符

程序段1

#else

程序段2

#endif

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

(2)

#ifndef 标识符

程序段1

#else

程序段2

#endif

它的作用是当所指定的标识符没有被#define命令定义过,则在程序编译阶段只编译程序段1,否则只编译程序段2。这种形式与第一种形式的作用相反。

(3)

#if 表达式

程序段1

#else

程序段2

#endif

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

例子:

题目:输入一个字母字符,使之条件编译,使之能根据需要将小写字母转化为大写字母输出,或将大写字母转化为小写字母输出。

代码1

#includeusing namespace std;#define upper 1int main(){char a; #if upper      cout<>a; if(a>='a'&&a<='z') {      cout>a;if(a>='A'&&a<='Z') {   cout

代码2:

#includeusing namespace std;#define upper 0int main(){  char a; #if upper      cout<>a;if(a>='a'&&a<='z')  {       cout>a;  if(a>='A'&&a<='Z')  {    cout

分析:

代码1和代码2的区别是upper的值分别是1和0,运行结果也证明了分别编译了语句段1和语句段2。

cout<

这个语句是在#endif之后的语句,这说明#endif只是表示了#if——#else语句的结束,而不是编译的结束,也就是说#endif之后的语句都会正常的编译和执行。

通过分享实用的计算机编程语言干货,推动中国编程到2025年基本实现普及化,使编程变得全民皆知,最终实现中国编程之崛起,这里是中国编程2025,感谢大家的支持。

foreach和while的区别(编译之后)_C++学习大纲:条件编译相关推荐

  1. foreach和while的区别(编译之后)_一文了解解释型语言和编译型语言之区别

    引言 ​ 我们学了这么久的编程,做了那么多的项目,但总有那么一些概念即模糊又清晰,比如我们今天要细谈的解释型语言和编译型语言. 何谓解释?何谓编译? 这一切要从我们学习C语言的时候开始. 所有学过C语 ...

  2. 在保护继承中基类的共有成员_C++学习大纲:继承方式的调整

    C++ 继承方式的调整 在任何继承方式中,除了基类的private成员外,都可以在派生类中分别调整其访问控制. 调整格式 [public: | protected: | private: ] :: ; ...

  3. struct类型重定义 不同的基类型_C++学习大纲:联合类型

    C++联合类型 联合类型(又称共同体类型),一种能够表示多种数据(类型可以相同可以不同,变量名字不同就行)的数据类型. 1. 联合类型的定义 union {}; 与结构类型类似,只是把struct 换 ...

  4. [JS] for-each和map()的区别

    先说下for-each与for-of还有for-in的区别. for-of和for-in都是对对象操作的,而for-each和map()是对数组进行操作的. for-in的使用:对于一个数组里的每一个 ...

  5. php in循环与for循环,详谈js中标准for循环与foreach(for in)的区别

    js中遍历数组的有两种方式 var array=['a'] //标准的for循环 for(var i=1;i alert(array[i]) } //foreach循环 for(var i in ar ...

  6. JS数组中 forEach() 和 map() 的区别

    JS数组中 forEach() 和 map() 的区别 Array中 Array.forEach()和 Array.map()方法之间的区别. forEach()和map()方法通常用于遍历Array ...

  7. foreach和volist的区别

    foreach和volist的区别 1.foreach标签 foreach标签用于循环输出: foreach(name,item,key) name(必须):要输出的数据模板变量 item(必须):循 ...

  8. vue forEach和map的区别

    记录工作中遇到的问题,选择右边数组一项进行删除,forEach和map的区别就出来了 1.刚开始是foreach写的,效果没出来 this.rightTree:表示右边的数组this.oriFathe ...

  9. 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 )

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

最新文章

  1. VS2010 调用RFC 时注意(.net4.0) 使用nco
  2. 怎么添加本地音乐_展示 | 传一学员优秀项目之音乐播放器
  3. System类+Math类+Arrays类
  4. Winform-图片上传
  5. 【nodejs原理源码赏析(4)】深度剖析cluster模块源码与node.js多线程(上)
  6. sqlserver有外键无法创建触发器_数据库不使用外键的 9 个理由
  7. linux 远程桌面 命令,linux 命令 远程连接
  8. python毕业设计作品基于django框架外卖点餐系统毕设成品(6)开题答辩PPT
  9. Element 表单样式调整
  10. 考研数学 【数列极限证明题】题型方法总结
  11. LCD驱动芯片HT16c21使用注意事项
  12. 希腊计数法罗马计数法
  13. ubuntu16.04下摄像头驱动
  14. Chrome 插件下载网站+6个实用插件推荐
  15. Aras Innovator: 扩展Part类型,管理更多的物体类型
  16. 文件打开模式r,w,a,r+,w+,a+的区别和联系
  17. sklearn.LabelEncoder解决未见过值问题ValueError y contains previously unseen labels [69]
  18. php 时间戳 最大,PHP中大于2038年时间戳的问题处理
  19. 智能车|直流电机、编码器与驱动器---减速器
  20. ImportError: No module named 'win32api'

热门文章

  1. JVM虚拟机-Class文件之访问标志
  2. 网络(13)-SYN flood及其应对方法
  3. java三个取最大值、菜单新增修改、猜数字大小
  4. [C#.NET通用权限管里系统组件]对资源权限、列表型、记录级权限、数据集权限的实现参考...
  5. SerializeUtil 序列化 java
  6. Windows下Java调用BAT批处理不弹出cmd窗口
  7. css 总结内容用到的绝对居中的几种方式
  8. Java Servlet(六):HttpServlet实现原理(jdk7+tomcat7+eclipse)
  9. 华为4X和4C无法使用电信4G的解决办法
  10. 循环队列(循环数组)中元素个数的计算