第7章编译预处理_第1页
第7章编译预处理_第2页
第7章编译预处理_第3页
第7章编译预处理_第4页
第7章编译预处理_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、第七章预处理预处理宏定义宏定义文件包含文件包含条件编译条件编译编译预处理编译预处理编译编译连接连接执行执行define#include为了和一般为了和一般c语句相区别,这些命令以符号语句相区别,这些命令以符号#开头。开头。用标识符来代表一个字符串(给字符串取个名字)。用标识符来代表一个字符串(给字符串取个名字)。c语言用语言用“#define”进行宏定义。进行宏定义。c编译系统在编译前将编译系统在编译前将这些标识符替换成所定义的字符串。这些标识符替换成所定义的字符串。概念概念格式格式define 标识符标识符 字符串字符串相关相关概念概念宏名:宏定义中的标识符称为宏名:宏定义中的标识符称为“宏

2、名宏名”。宏展开:在预编译时将宏名替换成字符串的过程称宏展开:在预编译时将宏名替换成字符串的过程称 为为“宏展开宏展开”。 #define pi 3.1415926#include #define 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; v o l u m e = p i * r a d i u s * r a d i u s * r a d

3、i u s * 3 / 4 ; printf(length=%.2f,area=%.2f,volume=%.2fn, length, area, volume);例例7.1 输入圆的半径,求圆的周长、面积和球的体积。要求输入圆的半径,求圆的周长、面积和球的体积。要求使用无参宏定义圆周率。使用无参宏定义圆周率。说明说明#define pi 3.14;#define pi 3.14;area=piarea=pi* *r r* *r;r;area=3.14;area=3.14;* *r r* *r;r;宏展开宏展开#define g 9.8#define pi 3.14 int f1( ) #und

4、ef gvoid main( ) g的有的有效范围效范围pi的有的有效范围效范围#define r 3.0#define pi 3.14 #define l 2*pi*r#define s pi*r*rvoid main() printf(“l=%fns=%fn”,l,s);宏展开宏展开printf(“l=%fns=%fn”,2*3.14*3.0 , 3.14*3.0*3.0);带参数的宏定义不只是进行简单的字符串替带参数的宏定义不只是进行简单的字符串替换,还要进行参数替换。换,还要进行参数替换。格式格式概念概念define 宏名(参数表)宏名(参数表) 字符串字符串类似函数头,但是没类似函数

5、头,但是没有类型说明,参数也有类型说明,参数也不要类型说明不要类型说明展开置展开置换规则换规则按照按照#define#define命令行中指定的命令行中指定的“字符串字符串”从左到从左到右进行置换(扫描置换)。如果串中包含宏定义右进行置换(扫描置换)。如果串中包含宏定义中的形参,则将程序中相应的实参代替形参,其中的形参,则将程序中相应的实参代替形参,其它字符原样保留,形成了替换后的字符串。它字符原样保留,形成了替换后的字符串。举例举例#define s(a,b) a*barea=s(3,2);宏展开宏展开area=3*2;例例7. 2 用带参数的宏定义表示圆的面积。用带参数的宏定义表示圆的面积

6、。#define pi 3.14#define s(r) pi*r*r void main() float a,area; a=3.6; area=s(a); printf(“r=%fnarea=%fn”,a,area); area=3.14*a*a;宏展开宏展开说明说明宏展开宏展开area=3.14*a+b*a+b;不再是求不再是求面积了。面积了。此时此时s是符号常量(不带参的宏是符号常量(不带参的宏名),它代表字符串名),它代表字符串“(r) (r) 3.143.14* *r r* *r r”。2 2、定义带参数宏时还应该注意宏名与参数表之间不能有、定义带参数宏时还应该注意宏名与参数表之间

7、不能有空格。有空格就变成了不带参数的宏定义。空格。有空格就变成了不带参数的宏定义。 例:例:define define s (r) 3.14s (r) 3.14* *r r* *r r概念概念格式格式 #include “ #include “文件名文件名”或或 #include #include 所谓所谓“文件包含文件包含”处理是指一个源文件可以将另处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。文件包含到本文件之中。示意图示意图 #include ab 包含包含file2.cfile1.cabfile1.c说明说明例例7.3

温馨提示

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

评论

0/150

提交评论