版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译预处理主讲:刘晓涛1议程编译预处理概述三种预处理命令宏定义包含文件条件编译2编译预处理概述“编译预处理”是C语言编译系统的一个组成部分。编译预处理是在编译前由编译系统中的预处理程序对源程序的预处理命令进行加工。源程序中的预处理命令均以“#”开头,结束不加分号,以区别源程序中的语句,它们可以写在程序中的任何位置,作用域是自出现点到源程序的末尾。3三种预处理命令执行宏定义(宏替换)
包含文件
条件编译4宏定义简单宏定义定义形式:#define宏名串(宏体)如:#definePI3.14159宏定义的作用宏定义后,该程序中宏名就代表了该字符串说明#undef终止宏定义的作用域:#undefPI5#defineR3.0#definePI3.1415926#defineL2*PI*R/*宏体是表达式*/#defineSPI*R*Rmain(){printf("L=%f\nS=%f\n",L,S);}程序运行结果如下:
L=18.849556S=28.274333双引号内的与宏同名的字母不作宏展开宏定义的嵌套使用6带参数的宏定义带参数的宏定义的一般形式:#define宏名(参数表)字符串如:#defineS(a,b)a*b
带实参的宏名展开时,宏名被宏体替换,宏体中的形参按从左到右的顺序被实参替换。例如:area=S(3,2);赋值语句展开为:area=3*2;7引用宏只占编译时间,不占运行时间。引用宏没有返回值。
如:
#definesqu(n)n*nmain(){printf("%f\n",27.0/squ(3.0));}程序输出结果为:
27.000000类似于:printf(“%f\n”,27.0/3.0*3.0);
宏定义与函数的区别8宏名与形参无类型,只是一个符号代表实参为表达式:函数调用是先计算出实参的值,再将值传递给形参;宏的引用是用表达式替换形参。例如:定义:#defineS(a,b)a*b引用:S(a+c,b+c)展开:a+c*b+c宏定义与函数的区别(续)9文件包含文件包含预处理(#include)
一个源文件可以将另一个源文件的全部内容包含进来#include命令有两种格式。#include<文件名>
包含标准头文件(/usr/include下的)#include“文件名”
包含自定义的头文件(在当前目录)10控制条件为常量表达式的条件编译
形式一#if常量表达式程序段#endif功能: 常量表达式非0时,程序段被编译。否则程序段不被编译。11控制条件为常量表达式的条件编译
形式二#if
常量表达式
程序段1#else
程序段2#endif
功能:常量表达式为非0时,程序段1被编译。否则,编译程序段212#if常量表达式1程序段1#elif
常量表达式2程序段2
......#elif
常量表达式n程序段n#else
程序段n+1#endif控制条件为常量表达式的条件编译
形式三嵌套形式13控制条件为定义标识符的条件编译
形式一#ifdef
标识符程序段#endif功能:当标识符在该条件编译结构前已定义过时,程序段被编译。否则,程序段不被编译。14#ifdef
标识符程序段1#else
程序段2#endif功能:当标识符在该条件编译结构前已定义过时,程序段1被编译。否则,编译程序段2。控制条件为定义标识符的条件编译
形式二15控制条件为定义标识符的条件编译
形式三#ifndef
标识符程序段1#else
程序段2#endif
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中建集团项目商务客户考试题及答案
- 教科版科学六上《抵抗弯曲》练习课件3
- 水产品冷冻冷藏设备、低温加工生产线制造项目可行性研究报告模板-备案审批
- 神经内科护理入院宣教
- 医疗护理纠纷的防范措施
- 医学分析-脊髓损伤护理查房动态模板
- 造口黏膜护理个案分享
- 2026年税务师职业资格考试历年真题专项训练
- 2026年事业单位考试《物流管理》专项训练试卷(附答案)
- 2026年初中生物知识专项训练试卷及答案冲刺
- 2026年新教材人教版九年级上册英语期中复习:Unit 1-4+期中5套测试卷汇编(含答案)
- 河北省邯郸市2025-2026学年高一上学期期中联考语文试题及答案
- ESC 2026新版心力衰竭管理指南精读
- 2024+ESO指南:卵圆孔未闭患者卒中后诊断与治疗
- 2026智联招聘笔试题库及答案
- 2026版《药物临床试验质量管理规范》GCP考试题库(含标准答案+解析)
- EDA技术及应用项目教程 教学大纲
- 中医护理评估
- 2025年度中国展览数据统计报告
- 2026年中考作文押题指导
- 全新版大学英语视听说教程1答案
评论
0/150
提交评论