- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C语言程序设计》课件PPT 第09章编译预处理
第9章 编译预处理 [例] 返回多个值的宏定义。 #define PI 3.1415926 #define CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4/3*PI*R*R*R? void main() { float r,l,s,v; /*半径、圆周长、圆面积、球体积 */ scanf(%f,r); CIRCLE(r,l,s,v); printf(r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2f\n,r,l,s,v); } 9.2 文件包含 9.3 条件编译9.3.1 #ifdef ~ #endif和#ifndef ~ #endif命令 1.一般格式 #ifdef 标识符 程序段1; [#else 程序段2;] #endif 2.功能:当“标识符”已经被#define命令定义过,则编译程序段1,否则编译程序段2。 9.3.2 #if ~ #endif 1.一般格式 #if 常量表达式 程序段1; [#else 程序段2;] #endif 2.功能:当表达式为非0(“逻辑真”)时,编译程序段1,否则编译程序段2。 [案例] 输入一个口令,根据需要设置条件编译,使之能将口令原码输出,或仅输出若干星号“*”。 #define PASSWORD 0 /*预置为输出星号*/ void main() { …… /*条件编译*/ #if PASSWORD /*源码输出*/ …… #else /*输出星号*/ …… #endif …… } 上机: P161 实验六,7,8 (3)虽然有参宏与有参函数确实有相似之处,但不同之处更多,主要有以下几个方面: 1)调用有参函数时,是先求出实参的值,然后再复制一份给形参。而展开有参宏时,只是将实参简单地置换形参。 2)在有参函数中,形参是有类型的,所以要求实参的类型与其一致;而在有参宏中,形参是没有类型信息的,因此用于置换的实参,什么类型都可以。有时,可利用有参宏的这一特性,实现通用函数功能。 3)使用有参函数,无论调用多少次,都不会使目标程序变长,但每次调用都要占用系统时间进行调用现场保护和现场恢复;而使用有参宏,由于宏展开是在编译时进行的,所以不占运行时间,但是每引用1次,都会使目标程序增大1次。 * * 9.1 宏定义与符号常量 9.2 文件包含 9.3 条件编译 源程序生成执行文件的过程: C语言源程序 .c或.cpp 编译 目标程序 .obj 链接 执行程序 .exe #include stdio.h #define PI 3.14159 void main ( ) { float r = 4; printf (“s = %f\n”, PI*r*r); } 预处理命令 预处理 预处理命令简介 预处理命令:C源程序中以#开头、以换行符结尾的行 种类: 宏定义 #define、#undef 文件包含 #include 条件编译 #if、#ifdef、#else、#endif等 格式: “#”开头 占单独书写行 语句尾不加分号 9.1 宏定义 宏定义分为两种:不带参数的宏定义和带参数的宏定义。 1、不带参数的宏定义 一般形式 #define 标识符 单词串 指令名称 宏名,被定义代表后面的单词串 宏体,是宏的内容文本 功能 用指定标识符(宏名)代替字符序列(宏体) 如 #define YES 1 #define NO 0 #define PI 3.1415926 #define OUT printf(“Hello,World”); #define SIZE 10 #define INT_STR %d void main ( ) { int a[SIZE], i; for (i = 0; i SIZE; i++) scanf (INT_STR, a[i]);
您可能关注的文档
- U.S. Federal Government Outsourcing Initiatives, Implementation and Benefits(2005年公共管理国际会议论文).doc
- Télécharger - Lobligation de conseil des prestataires de services.doc
- UML学习入门.doc
- UML面向对象分析与建模.doc
- UNIX操作系统培训课件PPT.ppt
- User Acceptance An Appraisal model research on E-Government services(2005年公共管理国际会议论文).doc
- USSD移动增值业务.doc
- Virus-Enabled Synthesis and Assembly of Nanowires for Lithium Ion Battery Electrodes-材料合成化学课件PPT.ppt
- Visual FoxPro数据库操作基础.ppt
- VLS方法制备纳米线-材料合成化学课件PPT.ppt
- 2025-2030中国超声仪器行业供需趋势及投资风险研究报告.docx
- 2025-2030中国超坚固对讲机行业市场发展趋势与前景展望战略分析研究报告.docx
- 1:500 1:1000 1:2000地形图检测点采集及建库技术要求.docx
- 2025-2030中国超低渗透空气过滤器(ULPA)行业竞争格局与发展趋势研究报告.docx
- 2025-2030中国超声图像分析软件行业市场现状供需分析及投资评估规划分析研究报告.docx
- 2025-2030中国超声多普勒流量计行业市场现状供需分析及投资评估规划分析研究报告.docx
- 2025-2030中国超声心动图(ECG)设备行业市场现状供需分析及投资评估规划分析研究报告.docx
- 2025-2030中国超声气动碎石术设备行业市场现状供需分析及投资评估规划分析研究报告.docx
- 2025-2030中国超声仪器市场应用潜力与发展商机分析研究报告.docx
- 2025-2030中国超声波人体秤行业市场发展趋势与前景展望战略分析研究报告.docx
文档评论(0)