第六章 预处理 宏定义文件包含_第1页
第六章 预处理 宏定义文件包含_第2页
第六章 预处理 宏定义文件包含_第3页
第六章 预处理 宏定义文件包含_第4页
第六章 预处理 宏定义文件包含_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、白 雪 飞中国科学技术大学电子科学与技术系Dept. of Elec. Sci. & Tech., USTCFall, 2003l预处理l宏定义l文件包含l条件编译l预处理n在编译之前对源程序进行“预处理”n预处理命令不是C语句,末尾没有分号n预处理命令不在可执行文件中执行n预处理命令都以#开始n包括宏定义、文件包含、条件编译等l举例n#define MAX 1000n#include l无参数的宏定义l带参数的宏定义l一般形式n#define 标识符 字符串l说明n把源程序中相应标识符予以替换n仅是简单的字符串替换,没有任何语法正确性检查n有效范围从定义处开始,到文件结束,或者由#undef

2、命令终止作用域n行末没有分号,如有分号将会被一起替换#define R 3.0#define PI 3.1415926#define L 2*PI*R#define begin #define end #define forever for(;)void main()begin /* */ printf(L=%f, L);#undef PI /* 取消对PI的宏定义 */ forever; /* for(;); 无限循环 */end /* */l一般形式n#define 宏名(参数表) 字符串l说明n宏定义仅是把参数作为字符串做简单替换,而不做任何运算求值和语法检查n宏名与参数表的括号之间不应

3、有空格n应注意参数替换后可能出现的语法错误和意料之外的运算n应在宏定义内容及其中参数两边加上括号#define S1(a,b) a*b#define S2(a,b) (a)*(b)#define max(a,b) (a)(b)?(a):(b)void main() int x=3, y=4, i=5, j=6, s, z; s=S1(x+y, x-y); /* s=x+y*x-y; s=11 */ s=S2(x+y, x-y); /* s=(x+y)*(x-y); s=-7 */ z=max(i+, j+); /* z=(i+)(j+)?(i+):(j+); */ /* z=7, i=6, j=8 */l一般形式n#include filenamen#include l说明n把另一个源文件的全部内容包含进来n预编译后,它们已成为一个文件n头文件的扩展名一般用.h,但并非规定n调用库函数一般使用,也可以使用n调用用户编写的头文件应使用l条件编译n对某些部分的源程序指定编译的条件n可以减少被编译的语句,减少目标程序的长度,减少运行时间n有利于移植程序,增加程序的灵活性l命令形式n#i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论