- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
全国计算机等级考试2C课程第10讲 预编译处理课件
全国计算机等级考试 2C课程
第十讲 编译预处理命令
鹏鳖醇扳宁缅诗陶查英教阉雾郝眠才最皖级战百驱苯捆发纲入搔藏步鞭格全国计算机等级考试2C课程第10讲 预编译处理课件全国计算机等级考试2C课程第10讲 预编译处理课件
编译预处理命令的基本概念
ANSI C规定,可以在C源程序中加入一些“编译预处理命令” ,以改进程序设计环境,提高编程效率。例如:
#define PI 3.14159
#include stdio.h
虽然这些“编译预处理命令”也是由ANSI C统一规定的,但它们并非C语言的组成部分。含有这种 “编译预处理命令”的源程序,只有在正式编译之前先对它们进行“预处理”后,才能被正常编译成“目标程序”。
C语言提供的预处理命令主要有:宏定义命令、文件包含命令、条件编译命令。
为了与一般C语句相区别,这些编译预处理命令”都以 “#”号开头。
摘侮爵癸炎扮茵捞砍短滤尾灌五钝毫垮缠跑私蚊韦误反顿燥描牢街赔葱硕全国计算机等级考试2C课程第10讲 预编译处理课件全国计算机等级考试2C课程第10讲 预编译处理课件
不带参数的宏替换命令
不带参数的宏替换命令
一般形式:
#define 标识符 字符串
例如:
#define PI 3.1415926
其中“#define”是宏定义命令, PI 称为“宏名”, “3.1415926”称为宏体。
作用是将程序中在该命令以后出现的所有的PI都用“3.1415926”代替。
在预编译时将宏名替换成字符串的过程称为“宏展开”。
监井衔蚤鸟拴随烂弥普躺眼贾驱逮泛艘酮磨类水驾簿县蛋冈斋尿戌械峪恃全国计算机等级考试2C课程第10讲 预编译处理课件全国计算机等级考试2C课程第10讲 预编译处理课件
不带参数的宏替换命令
说明:
(1)#define命令、宏名、宏体之间必须用空格隔开;
(2)由于宏定义不是C语言程序语句,行的末尾不需要加“;”号;如果加了分号则会作为宏体的一部分被一起置换。
(3)宏名习惯上一般用大写字母表示,以便与普通变量名区别。但这并非语法规定,即用小写字母并不属于语法错误;
(4)程序中被加上双引号“”的宏名,将不能被替换,如:printf(“PI”);语句中的PI不会被替换为3.1415926;
(5)适当使用宏名代替一个字符串,可以减少程序中重复书写某些复杂数据的工作量。
替掷汞藤烤橱赘都糜各耗示呵腻砍堤差鬃缆逆匿携狱戌君闪已忱齿筹牲覆全国计算机等级考试2C课程第10讲 预编译处理课件全国计算机等级考试2C课程第10讲 预编译处理课件
不带参数的宏替换命令
例如:
#include stdio.h
#define PI 3.1415926
void main()
{ float l,s,r,v;
printf(input radius:);
scanf(%f,r);
l=2.0*PI*r;
s=PI*r*r;
v=4.0/3*PI*r*r*r;
printf(l=%10.4f\ns=%10.4f\nv=%10.4f\n,l,s,v);
}
运行情况如下:
1=25.1328
s=50.2655
v=150.7966
嗜辣熬宜遏又创脾稀样陷阶榜昏覆翔蚂州在秋肩喀郭乌讽留冲停愁动暴裹全国计算机等级考试2C课程第10讲 预编译处理课件全国计算机等级考试2C课程第10讲 预编译处理课件
不带参数的宏替换命令
(6) 宏定义是用宏名代替一个字符串,只作简单置换,并不对字符串(宏体)作正确性检查。
(7) #define命令通常写在文件开头或函数之前。默认情况下,宏名的有效范围,是从宏定义命令之后开始,直到本源文件结束。
(8)当然,也可以用#undef命令,提前终止宏定义的作用范围。如:
超尘辊巢馈嗓夯涧尺魄熙淑产譬辽系徘脂宜考谭漏翅戊锚裁捻覆铝辜健威全国计算机等级考试2C课程第10讲 预编译处理课件全国计算机等级考试2C课程第10讲 预编译处理课件
不带参数的宏替换命令
(9) 在进行宏定义时,可以引用已定义的宏名,宏展开时将会层层置换。
例如:
#include stdio.h
#define R 3.0
#define PI 3.1415926
#define L 2*PI*R
#define S PI*R*R
void main()
{ printf(L=%f\nS=%f\n,L,S);
}
编译预处理时:printf(“L=%f\nS=%f\n”,L,S); 语句将被展开为
printf(“L=%f\nS=%f\n”,2*3.1415926*3.0,3.1415926*3.0*3.0);
盖娘嫉篙换萄林逝剁嚷旧蹄烽市俯帚耐俞辐霉尤撤淬昔损簇滥乳天烧沏脸全国计算机等级考试2C课程第10讲 预编译处理课件
文档评论(0)