1 / 24
文档名称:

第7章 编译预处理命令.ppt

格式:ppt   页数:24
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第7章 编译预处理命令.ppt

上传人:中国课件站 2011/10/11 文件大小:0 KB

下载得到文件列表

第7章 编译预处理命令.ppt

文档介绍

文档介绍:第7章编译预处理命令
2004年3月
河北建筑工程学院
编译预处理是C++编译系统的一个重要组成部分,它负责分析处理几种特殊的指令,这些指令被称为预处理命令。在C++源程序文件中,加入编译预处理命令,可以改进程序设计环境,提高编程效率。但它们不是C++语言的组成部分,不能直接对它们进行编译,编译系统在对源程序进行正式的编译之前,必须先对这些命令进行预处理,经过预处理后的程序不再包括预处理命令,然后由编译系统对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。
C++提供的预处理命令主要有以下三种:
  宏定义
  文件包含
  条件编译
这些命令均以#开头,每行一条命令,因为它们不是C++的语句,所以命令后无分号。
宏定义
宏定义分为两类:不带参数的宏定义和带参数的宏定义。
不带参数的宏定义
#define称为宏定义指令,它的一般格式为:
#define 标识符字符串
作用:用一个指定的标识符来代表一个字符串,字符串可以是常量、关键字、语句、表达式,还可以是空字符。
其中,标识符又称为宏名,字符串称为宏体。
编译预处理时,如果程序中出现宏定义命令,预处理程序就把该命令以后的程序中所有同宏名一致的标识符全部替换为所定义的宏体,这个过程称为“宏展开”。
例如:
#define PI
PI来代替字符串“”
※注意: 在预编译处理时,将程序中在该命令以后出现的所有的PI都用“”代替。
【】输入圆半径,求圆周长、圆面积、球体积。
#include <>
#define PI
void main()
{
double l,s,r,v;
cout<<"inputradius:"<<endl;
cin>>r;
l=2*PI*r;
s=PI*r*r;
v=*PI*r*r*r;
程序运行结果:
input radius: 6
l=
s=
v=
说明:
(1) 宏名一般用大写字母表示,以便与变量名相区别。
(2) 使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量,当需要改变某一个常量时,可以只改变#define命令行,做到一改全改,不容易出错
(3) 宏定义是用宏名代替一个字符串,在宏展开时只是作简单的字符串替换,并不对语法是否正确进行检查。
例如在输入下列宏命令时:
#define PI
将小数点“.”错写成了“,”,在编译预处理时也不会报错,只在编译时才会发现错误并报告错误。
(4) 宏定义不是C++语句,一定不要在行末加分号,如果加了分号,会将分号当成字符串的一部分进行替换。
(5) 通常把#define命令放在一个文件的开头,使其定义在本文件内全部有效,即作用范围从其定义位置起到文件结束。
(6) 可以使用#undef命令来取消宏定义的作用域。
#undef 命令的一般格式为:
#undef 宏名
它的作用是通知编译预处理系统取消前面由#define命令所定义的宏名,使其定义的宏名不再起作用。
例如:
#define PI
void main()
{ ……}
#undef PI
f1()
{ ……}
由于#undef的作用,使PI的作用范围在#undef行处终止,因此,在f1函数中,。这样可以灵活控制宏定义的作用范围。
(7) 宏定义允许嵌套定义,即在进行宏定义时,可以使用已定义过的宏名。
(8) 对程序中用双引号括起来的字符串内的字符,即使与宏名相同,也不进行替换
【】求半径为3的圆周长、圆面积和球体积。
#include <>
#define R 3
#define PI
#define L 2*PI*R
#define V *PI*R*R*T
void main()
{
cout<<"L="<<L<<"S="<<S
<<" V="<<V<<endl; }
程序运行结果:
L=
S=
V=
(9) 宏定义命令是专门用于预编译处理的,它与定义变量的含义不同,只作字符替换,不分配内存空间。
带参数的宏
这种宏不只是进行宏体的替换,还要进行参数的替换.
一般形式:
#define 宏名(形式参数表)字符串
字符串中包含了在形式参数表中所指定的参数
例如:
#define S(a,b) a*b
area = S(3,2) 得 3*2
【】计算圆面积
#include <

最近更新

2025年新疆阿勒泰地区单招职业适应性测试模拟.. 39页

2025年无锡商业职业技术学院单招综合素质考试.. 41页

2025年无锡工艺职业技术学院单招职业技能测试.. 41页

2025年无锡科技职业学院单招职业适应性测试题.. 40页

2025年日照航海工程职业学院单招职业倾向性测.. 39页

2025年昆山登云科技职业学院单招职业技能测试.. 39页

2025年昌吉职业技术学院单招职业倾向性考试模.. 40页

2025年晋中师范高等专科学校单招综合素质考试.. 41页

2025年晋城职业技术学院单招职业技能考试模拟.. 40页

2025年景德镇艺术职业大学单招职业适应性测试.. 41页

2025年曲阜远东职业技术学院单招综合素质考试.. 39页

2025年朔州师范高等专科学校单招职业适应性测.. 40页

2025年朔州陶瓷职业技术学院单招综合素质考试.. 38页

2025年杭州科技职业技术学院单招职业倾向性测.. 39页

2025年松原职业技术学院单招职业适应性测试题.. 39页

2025年枣庄科技职业学院单招综合素质考试题库.. 40页

2025年枣庄职业学院单招职业倾向性测试题库汇.. 42页

2025年柳州城市职业学院单招职业技能考试模拟.. 40页

2025年柳州铁道职业技术学院单招职业倾向性测.. 39页

2025年株洲师范高等专科学校单招职业技能测试.. 39页

2025年桂林信息工程职业学院单招职业适应性测.. 39页

2025年桂林师范高等专科学校单招职业倾向性测.. 40页

2025年桂林生命与健康职业技术学院单招职业倾.. 39页

2025年桐城师范高等专科学校单招职业适应性测.. 39页

2025年梅河口康美职业技术学院单招职业适应性.. 40页

2025年榆林职业技术学院单招职业倾向性考试模.. 39页

2025年榆林能源科技职业学院单招职业适应性测.. 41页

2025年国家开放大学《建筑力学》章节测试参考.. 13页

【人教版英语字帖】七年级下册单词表衡水体字.. 42页

食品安全自查、从业人员健康管理、进货查验记.. 9页