- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言经典课件第9章
第9章 编译预处理 所谓编译预处理是指,在对源程序进行编译之前,先对源程序中的编译预处理命令进行处理。编译预处理分为3种: 编译预处理不是C语言的一部分,编译预处理命令也不是C语句。预处理后的源程序,才能进行编译,以得到目标代码。 9.1 宏定义 在C语言中,“宏”分为无参数的宏(简称无参宏)和有参数的宏(简称有参宏)两种。 9.1.1 无参宏定义 1.无参宏定义的一般格式 #define 标识符 语言符号字符串 无参宏的作用,就是用一个指定的标示符,来代表一个字符串。例如:#define PRICE 30 预处理的时候,源程序文件中所有的PRICE都将用30来替代。 2.使用宏定义的优点 (1)可提高源程序的可维护性 (2)可提高源程序的可移植性 (3)减少源程序中重复书写字符串的工作量 [案例9.1] 输入圆的半径,求圆的周长、面积和球的体积。要求使用无参宏定义圆周率。 #define PI 3.1415926 /*PI是宏名,3.1415926是替换宏名的常数*/ void main() { float radius,length,area,volume; printf(Input a radius: ); scanf(%f,radius); length=2*PI*radius; /*引用无参宏求周长*/ area=PI*radius*radius; /*引用无参宏求面积*/ volume=PI*radius*radius*radius*3/4; /*引用无参宏求体积*/ printf(length=%.2f,area=%.2f,volume=%.2f\n,length, area, volume); } 9.1.2 有参宏定义 1.带参宏定义的一般格式 #define 宏名(形参表) 语言符号字符串 例如:#define S(a,b) a*b area = S(3,2); 那么预处理之后的语句为: area = 3*2; 2. 例9.3 #define PI 3.1415926 #define S(r) PI*r*r void main() { float a,area; a=3.6; area=S(a); printf(“r=%f\narea=%f\n”,a,area); } 3.说明 (1)area=S(a);宏展开后成为: area=3.1415926*a*a; (2)定义有参宏时,宏名与左圆括号之间不能留有空格。否则,C编译系统将空格以后的所有字符均作为替代字符串,而将该宏视为无参宏。 (3)注意有参宏和函数的区别。区分的一个重要方法就是:牢记宏仅仅是预处理阶段中,标志符到字符串的一个替换! (4)有时会用宏来代表一些简短的表达式。如: #define MAX(a,b) (a)(b)? (a):(b) t=MAX(x,y); 预处理之后变成: t= (x)(y)? (x):(y) 9.2 文件包含 1.文件包含的概念 文件包含是指,一个源文件可以将另一个源文件的全部内容包含进来。 2.文件包含处理命令的格式 #include “包含文件名” 或 #include 包含文件名 两种格式的区别仅在于: (1)使用双引号:系统首先到当前目录下查找被包含文件,如果没找到,再到系统指定的存放C库函数头文件的标准目录(由用户在配置环境时设置)去查找。 (2)使用尖括号:直接到系统指定的存放C库函数头文件的标准目录去查找。 9.3 条件编译 9.3.1 #ifdef ~ #endif和#ifndef ~ #endif命令 1.一般格式 #ifdef 标识符 程序段1; [#else 程序段2;] #endif 功能:当“标识符”已经被#define命令定义过,则编译程序段1,否则编译程序段2。 不同的计算机系统,整数的长度不同。当一个程序需要使用计算机的整数长度时,可以使用以下代码: #ifdef COMPUTER_A #define INTEGER_SIZE 16 #else #define INTEGER_SIZE 32 #endif 因此,只要使用#define定义了COMPUTER_A,那么程序会定义宏INTEGER_SIZE为16,否则定义这个宏为32。 调试程序时,有时希望输出一些需要的信息,而当调试完成后,不再输出这些信息。可以
您可能关注的文档
最近下载
- 安全管理人员初复训考核试卷含答案.doc
- 多模态大模型在金融行业的实践和展望-2024年全球人工智能与大模型开发与应用.pdf
- 电子商务测试题+参考答案.docx VIP
- 2024年江苏省南京市中考历史试题卷(含答案).docx
- 数独的社交互动:与朋友一起挑战数独.pptx VIP
- 大理州经济技术开发区“2.16”建筑施工生产安全事故调查报告警示学习教育.pptx
- 2017年高考全国2卷理综试题(Word版含答案).pdf
- 医疗服务公司医疗旅游服务合作协议.docx
- 人工智能技术在高中语文教学中的实践与应用研究教学研究课题报告.docx
- 山西大学《生物化学》内部题库练习期末真题汇编及答案.docx
文档评论(0)