欢迎来到天天文库
浏览记录
ID:51648460
大小:1.60 MB
页数:31页
时间:2020-03-27
《《预处理和语句》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章预处理和语句转向语句循环语句选择语句语句预处理功能龚涛1东华大学信息科学与技术学院C++语言程序是由若干个文件组成的,文件又是由若干个函数组成的,而函数便是由若干个语句组成。每条语句实现一个操作,若干个语句实现一种功能。C++语句的预处理功能是指C++语言源程序中可以包含使用的各种编译命令,而这些编译命令由于它们是在程序被正常编译之前执行的,故称为预处理命令(或指令)。这些命令所实现的功能称为预处理功能。预处理命令是编译命令,它不是语句,不要用分号结束。文件包含命令条件编译命令宏定义命令3.1预处理功能第3章预处理和语句龚涛2东华大学信息科学与技术学院
2、3.1.1文件包含命令3.1预处理功能文件包含命令格式如下:#include<文件名>或者#include"文件名"文件名以尖括号(<>)括起是指那些由系统提供的并放在指定子目录中的头文件;文件名以双括号("")括起是指那些由用户自己定义的放在当前目录或其他目录下的头文件或其他源文件。一条文件包含命令只能包含一个文件。若想包含多个文件,则必须用多条文件包含命令。在被包含的文件中还可以使用文件包含命令,文件包含命令可以嵌套使用。包含不宜太多。龚涛3东华大学信息科学与技术学院3.1.2条件编译命令条件编译命令是用来定义某些编译内容要在满足一定条件下才参与编译,否
3、则将不参与编译。因此,利用条件编译命令可以使同一个源程序在不同的编译条件下产生不同的目标代码。利用条件编译可在调试程序时增加一些调试语句,以达到跟踪的目的。当程序调试好后,重新编译时,再让调试语句不参与编译。(1)格式一#ifdef<标识符><程序段1>#else<程序段2>#endif3.1预处理功能龚涛4东华大学信息科学与技术学院3.1.2条件编译命令3.1预处理功能(2)格式二#ifndef<标识符><程序段1>#else<程序段2>#endif(3)格式二#if<产量表达式1><程序段1>#elif<产量表达式2><程序段2>#else<程序段3>#
4、endif龚涛5东华大学信息科学与技术学院3.1.3宏定义命令3.1预处理功能宏定义命令用来将一个标识符定义为一个字符串。该标识符被称为宏名,被定义的字符串称为替换文本。(1)简单的宏定义#define<宏名><字符串>一个标识符被宏定义后,该标识符便是一个宏名。在程序中出现的是宏名。在该程序被编译时,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译。宏替换是简单的代换。龚涛6东华大学信息科学与技术学院3.1.3宏定义命令3.1预处理功能使用简单的宏定义可以定义符号常量,但在C++语言中,常用const来定义符号常量。两种方法是有区别的,其主要区
5、别有:①const将产生一个具有类型的符号,用#define命令仅产生文本替换,而不管内容是否正确。②使用const可以定义一个局部常量,使其作用域局限在一个函数体内。而用#define定义的常量,尽管在某个函数体内,但它的作用域是从定义时开始,直到使用#undef取消其定义时为止;如果不取消其定义,则直到整个文件结束。③使用const定义常量是一个说明语句,以分号结束;而用#define定义常量是一个预处理命令,不能用分号结束。龚涛7东华大学信息科学与技术学院3.1.3宏定义命令3.1预处理功能(2)带参数的宏定义#define<宏名>(<参数表>)<宏体
6、><参数表>中可以有一个参数,也可以有多个参数,多个参数用逗号分隔。在替换时,<宏体>中与参数表中相同的标识符的字符序列将被程序中引用这个宏定义时提供的与该标识符对应的字符序列所替换。在宏定义时出现的参数称为形参,在程序中引用宏定义时出现的参数称为实参。在宏替换时,将用实参来替换<宏体>中所出现的形参。龚涛8东华大学信息科学与技术学院3.1.3宏定义命令3.1预处理功能例3.5分析下列程序的输出结果。#includevoidmain(){intb(5);#defineb2#definef(x)b*(x)inty(3);cout<7、y+1)<8、;选择语句;循环语句;转向语句。3.2语句第3章预处
7、y+1)<8、;选择语句;循环语句;转向语句。3.2语句第3章预处
8、;选择语句;循环语句;转向语句。3.2语句第3章预处
此文档下载收益归作者所有