欢迎来到天天文库
浏览记录
ID:13820307
大小:146.50 KB
页数:5页
时间:2018-07-24
《c语言预编译 教程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、·219·第9课结构体、共用体和枚举第12章预编译处理在本书前面的内容中,细心读者应该发现在很多代码中使用过以“#”号开头的预处理命令。在源程序中这些命令都放在函数之外,而且一般都放在源文件的前面,它们被称为预处理部分。C语言提供了多种预处理功能,例如宏定义、文件包含、条件编译等。合理地使用预处理有很多好处,例如可以使编写的程序更加便于阅读,便于修改、移植和调试,也有利于模块化程序设计。通过本章能学到如下知识:q预编译概述q宏定义q文件包含q条件编译q职场点拨——从沟通谈职业素养2007年X月X日,多云项目经理让小菜我尽快做
2、好规划,为下月项目的启动做好准备。我小菜不禁心想第三人称变成第一人称了,话也要变化:项目下月才启动,这就让我做规划,这么早有什么用呢…….日记应该以第一人称写一问一答我小菜:“下月的项目,项目经理让我现在就做准备,是不是太重视了啊!”Wisdom:“都说不能打无把握之仗,这在项目开发中也同样适用。做任何项目一定要提前做充分的准备,确保时间够用才能在执行过程中从容地应对各种突发情况。语言层次较浅”小菜我:“恩,记住了。言归正传,本章将要讲的预处理有什么用?”Wisdom:“你做项目之前需要好好规划,同样C语言为了加快处理效率,
3、也提供了一种准备活动,预先实现一些功能。”一问一答应该用小菜12.1预编译概述所谓的预处理,是指在进行编译的词法扫描和语法分析之前所做的工作。预处理是C语言的一个重要功能,它是由专用的预处理程序来完成的。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。软件的可移植和可重用问题是软件工程中的一个非常重要的问题。例如需要将在微机PC机正文中应注意名词术语平台上开发的程序移植到大型计算机上运行,同一套代码不加修改或经过少量的修改即可适应多种计算机系统。C语言是软件工程
4、中广泛使用的一门程序设计语言,需要很好的解决此类问题。为此ANSIC引入了预编译处理命令这一概念,用于·219·第9课结构体、共用体和枚举规范和统一不同编译器的指令集合。通过这些指令,控制编译器对不同的代码段进行编译处理,从而生成针对不同条件的计算机程序。ANSIC中主要定义如下三类预编译指令:q#define与#undef指令q#include指令q#if#endif和#if#else#endif指令12.2宏定义在C语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理
5、时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。在C语言中的“宏”有两种,分别是有参数宏和无参数宏。12.2.1不带参数的宏定义顾名思义,在无数参宏突然出现一个无参宏的宏名后面没有任何参数,其定义格式如下:#define标识符字符串上述格式的具体说明如下:(1)#:表示这是一条预处理命令。在C语言中,凡是以“#”开头的均为预处理命令;(2)define:为宏定义命令;(3)标识符:为所定义的宏名;(4)字符串:可以
6、是常数、表达式、格式串等。在本书前面的内容中,讲解的定义符号常量就是一种无参宏定义。在开发过程中,通常将反复使用的表达式进行宏定义处理。例如下面的代码:#defineM(y*y+3*y)上述代码的功能是,设置标识符M来代替表达式(y*y+3*y)。这样在编写源程序时,所有的(y*y+3*y)都可由M代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用(y*y+3*y)表达式去置换所有的宏名M,然后再进行编译。看下面的代码:#definePI3.1415926main(){floatl,s,r,v;printf("inp
7、utradius:");scanf("%f",&r);/*输入圆的半径*/l=2.0*PI*r;/*圆周长*/s=PI*r*r;/*圆面积*/v=4.0/3.0*PI*r*r*r;/*球体积*/printf("l=%10.4fs=%10.4fv=%10.4f",l,s,v);}在上述代码中,用标识符(称为“宏名”)PI代替字符串“3.1415926”。另外,也可以使用“#undef”来终止宏定义命令。关于宏定义的具体说明如下:(1)宏名大多数用大写字母表示。(变量名一般用小写字母)。(2)使用宏可以提高程序的可读
8、性和可移植性。如上述程序中,多处需要使用π上下文不一致,上面是PI值,用宏名既便·219·第9课结构体、共用体和枚举12.5疑难问题解析在本课章的内容中,详细介绍了C语言中预编译处理的各种基本知识。在本节的内容本节中注意语言表述,将对本章中比较难以理解的问题进行讲解。读者疑问:写好C语言,
此文档下载收益归作者所有