



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#if #ifdef和#ifndef的用法和区别#if #ifdef和#ifndef用法移位运算符的优先级高于条件运算符,重载是不能改变运算符优先级的,这点要注意,所以代码应当像下面这样调整,写宏的时候一定要注意优先级,尽量用括号来屏蔽运算符优先级。#define MAXIMUM(x,y) (x)(y)?(x):(y)#define MINIMUM.#include#define MAX#define MAXIMUM(x,y) xy?x:y#define MINIMUM(x,y) xy?x:yint main() int a=10,b=20;#ifdef MAX printf(40:The larger one is %dn,MAXIMUM(a,b);#else printf(40:The lower one is %dn,MINIMUM(a,b);#endif#ifndef MIN printf(40:The lower is %dn,MINIMUM(a,b);#else printf(40:The larger one is %dn,MAXIMUM(a,b);#endif#undef MAX#ifdef MAX printf(40:The larger one is %dn,MAXIMUM(a,b);#else printf(40:The lower one is %dn,MINIMUM(a,b);#endif#define MIN#ifndef MIN printf(40:The lower one is %dn,MINIMUM(a,b);#else printf(40:The larger one is %dn,MAXIMUM(a,b);#endif return 0;#if #ifdef和#ifndef区别#ifdef 标识符程序段1#else程序段2#endif它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。其中#else部分也可以没有,即:#ifdef程序段1#denif这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。如果一个C源程序在不同计算机系统上系统上运行,而不同的计算机又有一定的差异。例如,我们有一个数据类型,在Windows平台中,应该使用long类型表示,而在其他平台应该使用float表示,这样往往需要对源程序作必要的修改,这就降低了程序的通用性。可以用以下的条件编译:#ifdef WINDOWS#define MYTYPE long#else#define MYTYPE float#endif如果在Windows上编译程序,则可以在程序的开始加上#define WINDOWS这样则编译下面的命令行:#define MYTYPE long如果在这组条件编译命令之前曾出现以下命令行:#define WINDOW则预编译后程序中的MYTYPE都用float代替。这样,源程序可以不必作任何修改就可以用于不同类型的计算机系统。当然以上介绍的只是一种简单的情况,可以根据此思路设计出其它的条件编译。例如,在调试程序时,常常希望输出一些所需的信息,而在调试完成后不再输出这些信息。可以在源程序中插入以下的条件编译段:#ifdef DEBUGprint (device_open(%p)n, file);#endif如果在它的前面有以下命令行:#define DEBUG则在程序运行时输出file指针的值,以便调试分析。调试完成后只需将这个define命令行删除即可。有人可能觉得不用条件编译也可达此目的,即在调试时加一批printf语句,调试后一一将printf语句删除去。的确,这是可以的。但是,当调试时加的printf语句比较多时,修改的工作量是很大的。用条件编译,则不必一一删改printf语句,只需删除前面的一条“#define DEBUG”命令即可,这时所有的用DEBUG作标识符的条件编译段都使其中的printf语句不起作用,即起统一控制的作用,如同一个“开关”一样。有时也采用下面的形式:#ifndef 标识符程序段1#else程序段2#endif只是第一行与第一种形式不同:将“ifdef”改为“ifndef”。它的作用是:若标识符未被定义则编译程序段1,否则编译程序段2。这种形式与第一种形式的作用相反。以上两种形式用法差不多,根据需要任选一种,视方便而定。*还有一种形式,就是#if后面的是一个表达式,而不是一个简
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南郑州师范学院诚聘高层次人才考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025广东惠州市博罗县碧盛环保科技有限公司招聘及考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025年甘肃省张掖市教育局培黎职业学院引进高层次人才14人考前自测高频考点模拟试题及参考答案详解
- 2025河北中核二四劳务有限公司招聘200人模拟试卷及答案详解(有一套)
- 2025广西来宾宾信投资集团有限公司招聘拟聘人员模拟试卷含答案详解
- 2025北京昌平区统计局面向社会招聘经济运行监测工作专班助统员1人考前自测高频考点模拟试题及答案详解1套
- 2025福建泉州市洛江区总商会招聘编外工作人员1人考前自测高频考点模拟试题有答案详解
- 2025湖南益阳市资阳区教育系统下属学校公益性岗位招聘10人模拟试卷及答案详解(易错题)
- 2025国网山西省电力公司博士后科研工作站招聘1人模拟试卷及答案详解(有一套)
- 2025河南新乡市延津县县外在编在岗教师回乡任教的模拟试卷完整答案详解
- 2025年人教新课标高一地理上册月考试卷
- 《临床心胸外科培训》课件
- 《超声诊断瓣膜病》课件
- 军体拳第一套全套图文教程
- 店长周工作总结数据报表模板
- “五育并举”视域下美育对工科大学生审美能力的提升研究
- 敦煌舞智慧树知到期末考试答案章节答案2024年兰州文理学院
- 机械工程学科研究前沿
- 涉外建设项目视频安防监控系统设计规范 DG-TJ08-2054-2013
- 中医外科 第十三章泌尿男科疾病概论
- Neo4j介绍及实现原理
评论
0/150
提交评论