C++程序设计:第6章 编译预处理

上传人:hs****ma 文档编号:569786100 上传时间:2024-07-31 格式:PPT 页数:21 大小:189KB
返回 下载 相关 举报
C++程序设计:第6章 编译预处理_第1页
第1页 / 共21页
C++程序设计:第6章 编译预处理_第2页
第2页 / 共21页
C++程序设计:第6章 编译预处理_第3页
第3页 / 共21页
C++程序设计:第6章 编译预处理_第4页
第4页 / 共21页
C++程序设计:第6章 编译预处理_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《C++程序设计:第6章 编译预处理》由会员分享,可在线阅读,更多相关《C++程序设计:第6章 编译预处理(21页珍藏版)》请在金锄头文库上搜索。

1、目目 录录F第第1章章 C+概述概述F第第2章章 数据类型、运算符和表达式数据类型、运算符和表达式F第第3章章 简单的输入简单的输入/输出输出F第第4章章 C+的流程控制的流程控制F第第5章章 函数函数F第第6章章 编译预处理编译预处理F第第7章章 数组数组F第第8章章 结构体、共同体和枚举类型结构体、共同体和枚举类型F第第9章章 指针和引用指针和引用F第第10章章 类和对象类和对象F第第11章章 类和对象的其他特性类和对象的其他特性F第第12章章 继承和派生继承和派生F第第13章章 多态性多态性F第第14章章 输入输入/输出流输出流F第第15章章 模板模板v第一部分第一部分 面向过程的程序设

2、计面向过程的程序设计v第二部分第二部分 面向对象的程序设计面向对象的程序设计第第6章章 编译预处理编译预处理本章要点本章要点v了解带参的宏定义和不带参的宏定义了解带参的宏定义和不带参的宏定义v了解文件包含及使用方法了解文件包含及使用方法v自学条件编译在程序设计中的使用自学条件编译在程序设计中的使用主要内容主要内容v概述概述v宏定义宏定义v文件包含文件包含v条件编译条件编译(自学)(自学)编译预处理编译预处理编译预处理:编译预处理:编译器在对源程序正式编译之前,对源程序编译器在对源程序正式编译之前,对源程序进行的进行的文字上的文字上的处理工作。处理工作。预预处处理理1预预处处理理2编编译译 f.

3、cpp f .cpp f .cpp内容内容变化变化内容内容变化变化连连接接 f.obj f.exe“预预处理处理”命令行命令行以以“#”开头开头末尾不加末尾不加“;”可以放在程序的任何位置可以放在程序的任何位置编译预处理编译预处理三种预处理三种预处理宏定义宏定义文件包含文件包含条件编译(自学)条件编译(自学)不带参数的宏定义不带参数的宏定义v#define PI 3.1415926标识符标识符 字符串字符串不带参数的宏定义例不带参数的宏定义例#include /li0601.cpp 不带参数的宏定义不带参数的宏定义#define PI 3.1415926void main( )double l

4、,s,r,v;coutr;l=2.0*PI*r;s=PI*r*r;v=4.0/3*PI*r*r*r;cout周长为:周长为:ln面积为:面积为:sn体积为:体积为:vn;l=2.0*3.1415926*r;s= 3.1415926 *r*r;v=4.0/3* 3.1415926 *r*r*r;宏代换后宏代换后说明说明v一般用大写字母表示宏名一般用大写字母表示宏名v减少程序中的重复书写,提高通用性减少程序中的重复书写,提高通用性如:如:#define array_size 100int arrayarray_size;便于修改a只作简单置换,不作任何计算,不作语法检查只作简单置换,不作任何计算,

5、不作语法检查a不是不是C+语句,不在行末加语句,不在行末加“;”a有效范围:有效范围:定义命令之后到本源文件结束定义命令之后到本源文件结束a#undef终止宏定义的作用域终止宏定义的作用域例:例:#define PI 3.1415926main( )#undef PIf1( ).PI的有效范围的有效范围v双引号中的字符,与宏名相同也不置换双引号中的字符,与宏名相同也不置换说明说明v宏定义时,可引用已定义的宏名宏定义时,可引用已定义的宏名#include /li0602.cpp#define R 5.0#define PI 3.1415926#define L 2*PI*R#define S P

6、I*R*Rvoid main( )coutL=LnS=Sendl;不置换带参数的宏定义带参数的宏定义v格式格式:#define 宏名宏名(参数表参数表) 字符串字符串v例例 #define s(a,b) a*barea=s(2,3);带参数的宏定义例带参数的宏定义例#include /bc0601.cpp#define PI 3.1415926#define S(r) PI*r*rvoid main( ) float a,area; a=3.6; area=S(a); coutr=anarea=area(b)?(a):(b) )#define MAX4(a,b,c,d) MAX2( MAX2(

7、a,b),MAX2(c,d) )不允许递归定义不允许递归定义例:例: #define fac(n) n=1 ? 1 : n*fac(n-1) 文件包含文件包含作用:作用:让编译预处理器把另一个源文件嵌入(包含)让编译预处理器把另一个源文件嵌入(包含)到当前源文件中的该指令处。到当前源文件中的该指令处。 #include file2.hA B file1.cpp file2.h A B file1.cpp包包含含处处理理一般形式一般形式v文件包含命令格式如下:文件包含命令格式如下: #include 文件名文件名 或或 #include 区别:设用户源程序在区别:设用户源程序在文件夹文件夹 D:

8、VC 中,中, 系统规定的系统规定的标准头文件在下述文件夹中(标准头文件在下述文件夹中(标准包含路径标准包含路径) C:Program FilesMicrosoft Visual StudioVC98Include则:对则:对 编译器编译器先先在在 D:VC 文件夹中查找要包含的头文件文件夹中查找要包含的头文件 , 若找不到,若找不到,再再到到标准包含路径标准包含路径下查找该文件下查找该文件 , 找到后,将该头文件插入到用户源文件头部。找到后,将该头文件插入到用户源文件头部。 对对 编译器编译器直接直接到到标准包含路径标准包含路径下查找该文件下查找该文件 。C:Program FilesMic

9、rosoft Visual StudioVC98IncludeC:Program FilesMicrosoft Visual StudioVC98Lib若包含系统提供的头文件,则用较好若包含自己写的文件,则用较好包含处理的例子包含处理的例子int x=200, y=100;float x1=25.6, x2=28.9;file1.h#include file1.h#include void main(void) cout x t yn; cout x1 t x2n;file2.cppint x=200, y=100;float x1=25.6, x2=28.9;#include void ma

10、in(void) cout x t yn; cout x1 t x2n;file2.cpp包含处理后包含处理后 编译器对该文件,编译器对该文件,进行编译连接。进行编译连接。一条文件包含命令一条文件包含命令只能包含一个文件只能包含一个文件 条件编译的几种形式条件编译的几种形式v形式形式1 1 # #ifdefifdef 标识符标识符 程序段程序段1 1 #else else 程序段程序段22 # #endifendif可以没有可以没有当标识符已被定义过当标识符已被定义过(一般是用(一般是用# #definedefine定义),定义),则编译程序段则编译程序段1 1条件编译的几种形式条件编译的几种

11、形式v形式形式2 2 # #ifndefifndef 标识符标识符 程序段程序段1 1 # #else else 程序段程序段22 # #endifendif可以没有可以没有意义与形式1相反未定义未定义几种形式几种形式v形式形式3 3# #if if 表达式表达式 /*/*或或# #ifif(表达式)表达式)*/*/程序段程序段1 1#elseelse程序段程序段22# #endifendif例例#include #define LETTER 0void main( )char str20=C Language,c;int i=0;while (c=stri)!=0)i+;#if LETTERif (c=a& c=A&c=Z)c=c+32;#endifcoutc;coutendl;问题:问题:输入一输入一行字母字符,行字母字符,根据需要设置根据需要设置条件编译,使条件编译,使之能将字母全之能将字母全改为大写输出,改为大写输出,或全改为小写或全改为小写字母输出。字母输出。小结小结v掌握宏定义的方法掌握宏定义的方法v掌握文件包含处理方法掌握文件包含处理方法v自学条件编译的方法自学条件编译的方法

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号