版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 博物馆展柜灯光调试技师考试试卷及答案
- 麻醉临床技能培训中高仿真模拟人的核心作用
- 阻塞性睡眠呼吸暂停(OSA)成人患者围手术期管理专家共识(2025完整版)
- T∕CATAGS 66.2-2025 无人驾驶航空器系统指挥控制传输设备适航 第二部分:终端要求
- 广东揭阳市惠来县第一中学2026年高三年级第二学期阶段测试化学试题含解析
- 河南省兰考县第二高级中学2026届高三下学期考前冲刺(三)化学试题试卷含解析
- 巨噬细胞极化与肿瘤微环境信号网络
- 2026届青海省西宁市大通二中高三期末化学试题含解析
- 极端高温下远程心梗急救的临床效果研究
- 2025~2026学年海南五指山市度第一学期期末测试卷七年级英语
- 自主创业 公平竞争 高中政治统编版选择性必修二
- 有机化学(冯骏材编)课后习题答案
- 大学语文(第三版)课件 秀色
- 能源的获取和利用途径
- 海南省市政安装机械设备安装工程资料
- 课件《基础教育课程教学改革深化行动方案》全文解读实用PPT
- 拉伸钢板桩施工记录表
- 牙周炎-牙周脓肿
- GB/T 23914.2-2009道路车辆装载物固定装置安全性第2部分:合成纤维栓紧带总成
- GB/T 20485.43-2021振动与冲击传感器校准方法第43部分:基于模型参数辨识的加速度计校准
- A04044《纳税人税种认定表》
评论
0/150
提交评论