补充预处理命令_第1页
补充预处理命令_第2页
补充预处理命令_第3页
补充预处理命令_第4页
补充预处理命令_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、补充补充 预处理命令预处理命令 ?编译预处理命令是在编译前进行的一种编译编译预处理命令是在编译前进行的一种编译预处理,三种:预处理,三种:#define 、 #include和和#if。? 均均以字符以字符“#”开头,一行只能写一条开头,一行只能写一条,不,不是是C C语言的语句,语言的语句,无分号无分号“;” 。1#define #include#if2 例如:例如:#define PI 3.1415926功能:功能: 在程序中用一个宏名代替某个字符串在程序中用一个宏名代替某个字符串宏展开:宏展开: 进行编译前,进行的进行编译前,进行的宏替换宏替换将用将用字符串字符串原样替原样替换程序中的换

2、程序中的宏名宏名。注意:注意:替换过程不做正确性检查。替换过程不做正确性检查。 补充补充1 1 宏定义宏定义 #define#define 3源程序:源程序:#define PI 3.14#define PI 3.14#define S PI#define S PI* *r r* *r r#define V 4#define V 4* *S S* *r/3r/3void main( )void main( )float r;float r; printf(nInput r:); printf(nInput r:); scanf(%f,&r); scanf(%f,&r); pri

3、ntf(S=%.2f V=%.2fn, printf(S=%.2f V=%.2fn,S,VS,V);); 编译预处理后的程序:编译预处理后的程序:void main( ) float r; printf(nInput r:); scanf(%f,&r); printf(S=%.2f V=%.2fn, 3.14*r*r, 4* 3.14*r*r *r/3);4 在程序中用带参数的宏名代替字符串部分。例在程序中用带参数的宏名代替字符串部分。例如语句,如语句,m=MAX(3,4);宏展开:宏展开: 在编译预处理时,把源程序中所有在编译预处理时,把源程序中所有带参数的宏带参数的宏名名用宏定义中

4、的用宏定义中的字符串字符串替换,并且用宏名后圆括号替换,并且用宏名后圆括号中的中的实参替换实参替换字符串中的字符串中的形参形参。例如:例如:#define MAX(X,Y) (X)(Y)?(X):(Y)5【例【例2】带参数的宏定义。】带参数的宏定义。#define MAX(x,y) (x)(y)?(x):(y)void main( ) printf(%dn, MAX(a,b); printf(%dn,MAX(a+m,b+n);分两次替换:分两次替换:将宏名将宏名 替换成字符串替换成字符串 。用实参用实参 替换形参替换形参x,实参,实参 替换形参替换形参y。程序中的两个程序中的两个printf语

5、句被展开为:语句被展开为:printf(%dn, (a)(b)?(a):(b); printf(%dn, (a+m)(b+n)?( a+m):( b+n);6【例【例3】分析下面程序运行后的输出结果。】分析下面程序运行后的输出结果。#define M(x) x*(x-1)void main( ) int a=1,b=2; printf(%dn, M(1+a+b);分两次替换:分两次替换: 用用x*(x-1) 替换。替换。用用1+a+b替换替换x。printf语句被展开为:语句被展开为:printf(%dn, 1+a+b*(1+a+b-1);特别注意:特别注意:由于替换文由于替换文本中的本中的x

6、没没有用括号括有用括号括起,因此,起,因此,1+a+b也不也不能用括号括能用括号括起。起。7)命令的一般形式)命令的一般形式格式格式1: #include 格式格式2: #include 文件名文件名 例如:例如:#include补充补充2 2 包含命令包含命令 #include#include 8例如:调用例如:调用sin(x) 函数时,要在程序的开头使用如函数时,要在程序的开头使用如下命令:下命令:#include 在预处理时,用在预处理时,用math.h文件内容替换文件内容替换 #include 命令行。命令行。9 #include #include #include “e:f2.c”#

7、include “e:f2.c” A Af.cf.c B Bf2.cf2.c C CStdio.hStdio.h A Af.cf.c B B C C 注意:一行只能包含一个文件,若要包含多个文件则要注意:一行只能包含一个文件,若要包含多个文件则要写多行写多行#include命令!命令!预处理前:预处理前:预处理后的源程序:预处理后的源程序:编译器对预处理后的源程编译器对预处理后的源程序进行编译。序进行编译。10有一个名为有一个名为init.txt的文件,内容如下:的文件,内容如下:#define HDY(A,B) A/B#define PRINT(Y) printf(“y=%dn”,Y)有以下程序:有以下程序:#include”init.txt”main() int a=1,b=2,c

温馨提示

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

评论

0/150

提交评论