1 / 15
文档名称:

第09章 编译预处理.ppt

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

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

分享

预览

第09章 编译预处理.ppt

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

下载得到文件列表

第09章 编译预处理.ppt

文档介绍

文档介绍:第9章编译预处理
所谓编译预处理是指,在对源程序进行编译之前,先对源程序中的编译预处理命令进行处理;然后再将处理的结果,和源程序一起进行编译,以得到目标代码。
宏定义
文件包含
条件编译
[Return]
宏定义与符号常量
在C语言中,“宏”分为无参数的宏(简称无参宏)和有参数的宏(简称有参宏)两种。
无参宏定义
有参宏定义
[Return]
无参宏定义

#define 标识符字符串
例如:#define PI
其中:“define”为宏定义命令;“标识符”为所定义的宏名,通常用大写字母表示,以便于与变量区别;“字符串”可以是常数、表达式、格式串等。

(1)可提高源程序的可维护性
(2)可提高源程序的可移植性
(3)减少源程序中重复书写字符串的工作量
[] 输入圆的半径,求圆的周长、面积和球的体积。要求使用无参宏定义圆周率。
#define PI
main()
{
float r, l, s, v;
printf("Input a radius: ");
scanf("%f",&r);
l=2*PI*r;
s=PI*r*r;
v=*PI*r*r*r;
printf("l=%.2f, =%.2f,v=%.2f\n", l, s, v);
}

(1)宏名一般用大写字母表示,以示与变量区别。
(2)宏定义不是C语句,所以不能在行尾加分号。
(3)在宏展开时,预处理程序仅以按宏定义简单替换宏名,而不作任何检查。如果有错误,只能由编译程序在编译宏展开后的源程序时发现。
(4)宏定义命令#define出现在函数的外部,宏名的有效范围是:从定义命令之后, 到本文件结束。通常,宏定义命令放在文件开头处。
(5)可以用#undef命令终止宏定义的作用域。
(见P189)
(6)在进行宏定义时,可以引用已定义的宏名。
()见P189
有参宏定义

#define 宏名(形参表) 字符串
例如:#define S(a, b) a+b

(1)调用格式:宏名(实参表)
例如:sum=S(3, 2);
(2)宏展开:用宏调用提供的实参字符串,直接置换宏定义命令行中、相应形参字符串,非形参字符保持不变。
例如: sum=3+2;
思考:sum=2*S(3, 2); sum的值是多少?

(1)定义有参宏时,宏名与左圆括号之间不能留有空格。
(2)有参宏的展开,只是将实参作为字符串,简单地置换形参字符串,而不做任何语法检查。
(3)有参宏与有参函数之间的区别:
1)调用有参函数时,是先求出实参的值,然后再复制一份给形参。而展开有参宏时,只是将实参简单地置换形参。
2)在有参函数中,形参是有类型的,所以要求实参的类型与其一致;而在有参宏中,形参是没有类型信息的,因此用于置换的实参,什么类型都可以。有时,可利用有参宏的这一特性,实现通用函数功能。
文件包含

文件包含是指,一个源文件可以将另一个源文件的全部内容包含进来。()

#include “包含文件名”或#include <包含文件名>
例如:#include “”
#include < >
两种格式的区别仅在于:
(1)使用双引号:系统首先到当前目录下查找被包含文件,如果没找到,再到系统指定的“包含文件目录”(去查找。
(2)使用尖括号:直接到系统指定的“包含文件目录”去查找。一般地说,使用双引号比较保险。

(1)编译预处理时,预处理程序将查找指定的被包含文件,并将其复制到#include命令出现的位置上。
(2)常用在文件头部的被包含文件,称为“标题文件”或“头部文件”,常以“h”(head)作为后缀,简称头文件。在头文件中,除可包含宏定义外,还可包含外部变量定义、结构类型定义等。
(3)一条包含命令,只能指定一个被包含文件。如果要包含n个文件,则要用n条包含命令。
(4)文件包含可以嵌套,即被包含文件中又包含另一个文件。
条件编译
一般情况下,源程序中所有的行都参加编译。但是有时我们希望其中一部分内容只在满足一定条件下才进行编译,也就是说对一部分内容指定编译的条件,这就是“条件编译”。
#ifdef ~ #endif
#ifndef ~ #endif命令
#if ~ #endif

最近更新

2025年盘锦职业技术学院单招职业技能测试模拟.. 41页

2025年石家庄医学高等专科学校单招职业倾向性.. 41页

2026年山东文化产业职业学院单招职测备考题库.. 42页

2025年石家庄邮电职业技术学院单招综合素质考.. 41页

2025年硅湖职业技术学院单招职业适应性考试模.. 40页

2026年山东铝业职业学院单招职业技能测试模拟.. 43页

2025年福建信息职业技术学院单招职业技能考试.. 41页

2026年山西机电职业技术学院单招职业倾向性测.. 41页

2025年福建生物工程职业技术学院单招职业倾向.. 40页

2025年福建省泉州市单招职业倾向性考试模拟测.. 40页

2025年福建艺术职业学院单招职业技能考试模拟.. 40页

2026年常州工业职业技术学院单招职业技能考试.. 42页

2025年苏州信息职业技术学院单招职业倾向性测.. 39页

2025年苏州卫生职业技术学院单招职业适应性考.. 39页

2025年苏州经贸职业技术学院单招综合素质考试.. 41页

2025年荆州理工职业学院单招职业适应性测试模.. 41页

2025年菏泽医学专科学校单招职业技能测试题库.. 39页

2025年衡水职业技术学院单招综合素质考试模拟.. 39页

2025年衢州职业技术学院单招职业技能测试模拟.. 39页

2026年广西水利电力职业技术学院单招职业适应.. 42页

2026年庆阳职业技术学院单招职业倾向性测试题.. 42页

2026年张家口职业技术学院单招综合素质考试模.. 41页

2025年西安铁路职业技术学院单招职业技能考试.. 39页

2025年许昌陶瓷职业学院单招综合素质考试模拟.. 41页

2025年贵州工商职业学院单招职业适应性考试模.. 38页

2025年贵州建设职业技术学院单招职业倾向性考.. 41页

2025年贵州机电职业技术学院单招职业适应性测.. 39页

2025年贵州电子商务职业技术学院单招职业倾向.. 42页

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

国开《建筑力学》期末机考答案 15页