1 / 49
文档名称:

第8章 预处理命令.ppt

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

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

分享

预览

第8章 预处理命令.ppt

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

下载得到文件列表

第8章 预处理命令.ppt

文档介绍

文档介绍:宏定义
“文件包含”处理
条件编译
第8章预处理命令
ANSI C标准规定可以在C源程序中加入一些“预处理命令”(preprocessor DirectiveS) ,以改进程序设计环境,提高编程效率。
预处理命令是由ANSI C统一规定的,但是它不是C语言本身的组成部分,不能直接对它们进行编译(因为编译程序不能识别它们)。
必须在对程序进行通常的编译(包括词法和语法分析、代码生成、优化等)之前,先对程序中这些特殊的命令进行“预处理”, 即根据预处理命令对程序作相应的处理(例如,若程序中用#define命令定义了一个符号常量A,则在预处理时将程序中所有的A都置换为指定的字符串。若程序中用#include命令包含一个文件“”,)。
经过预处理后程序不再包括预处理命令了,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。现在使用的许多C编译系统都包括了预处理、编译和连接等部分,在进行编译时一气呵成。因此不少用户误认为预处理命令是C语言的一部分,甚至以为它们是C语句,这是不对的。必须正确区别预处理命令和C语句、区别预处理和编译,才能正确使用预处理命令。C语言与其他高级语言的一个重要区别是可以使用预处理命令和具有预处理的功能。
C提供的预处理功能主要有以下三种:
1. 宏定义
2. 文件包含
3. 条件编译
分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语句相区别,这些命令以符号“#”开头。
宏定义
不带参数的宏定义
用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为#define 标识符字符串。这就是已经介绍过的定义符号常量。
如:#define P “”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的PI都用“”代替。
以一个简单的名字代替一个长的字符串,因此把这个标识符(名字)称为“宏名”,在预编译时将宏名替换成字符串的过程称为“宏展开”。#define是宏定义命令。

#define PI
main()
{float l,s,r,v;
printf("input radiuS∶");
scanf("%f",&r);
l=*PI*r;
s=PI*r*r;
v=*PI*r*r*r;
printf(“l=%\nS=%\nv=%\n”,
l,s,v);
}
运行情况如下:
input radius:4
l=
s=
v=
说明:
(1) 宏名一般习惯用大写字母表示,以便与变量名相区别。
(2) 使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。
(3) 宏定义是用宏名代替一个字符串,也就是作简单的置换,不作正确性检查。如果写成
#define PI
即把数字1写成小写字母l,预处理时也照样代入,不管含义是否正确。也就是说预编译时不作任何语法检查。只有在编译已被宏展开后的源程序时才会发现错误并报错。
(4) 宏定义不是C语句,不必在行末加分号。如果加了分号则会连分号一起进行置换。如:
#define PI ;
area=PI*r*r;
经过宏展开后,该语句为
area=;*r*r;
显然出现语法错误。
(5) #define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。通常,#define命令写在文件开头,函数之前,作为文件一部分,在此文件范围内有效。
(6) 可以用#undef命令终止宏定义的作用域。例如:
#define g
main()
{
| G的有效范围

}
#undef g
f1()
{

}
由于#undef的作用,使G的作用范围在#undef行处终止.

最近更新

2026年川南幼儿师范高等专科学校单招职业技能.. 42页

2025年绵阳飞行职业学院单招职业适应性测试模.. 39页

2025年肇庆医学高等专科学校单招职业倾向性考.. 41页

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

2025年苏州农业职业技术学院单招职业倾向性测.. 40页

2026年广东女子职业技术学院单招综合素质考试.. 42页

2026年广东工贸职业技术学院单招职业倾向性考.. 42页

2025年苏州托普信息职业技术学院单招职业适应.. 40页

2026年广东省阳江市单招职业适应性测试题库附.. 43页

2026年广东金融学院单招职业技能测试模拟测试.. 42页

2026年广州城建职业学院单招职业适应性测试题.. 42页

2025年西双版纳职业技术学院单招职业适应性测.. 40页

2025年西安信息职业大学单招综合素质考试题库.. 40页

2026年广西省贺州市单招职业适应性测试题库及.. 41页

2025年西安汽车职业大学单招职业技能测试模拟.. 40页

2026年徐州工业职业技术学院单招职业倾向性测.. 40页

2026年徽商职业学院单招职业技能测试模拟测试.. 41页

2026年恩施职业技术学院单招职业技能考试模拟.. 42页

2026年承德护理职业学院单招职业倾向性测试题.. 41页

2025年贵州民用航空职业学院单招职业倾向性测.. 41页

2026年新疆博尔塔拉蒙古自治州单招职业倾向性.. 43页

2025年贵州省贵阳市单招职业倾向性测试模拟测.. 41页

2025年贵州省黔西南布依族苗族自治州单招职业.. 41页

2026年无锡工艺职业技术学院单招职业倾向性测.. 41页

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

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

农村人才流失国外研究报告 2页

住院患者自带药品使用管理规定通知 3页

栏杆计算书 2页

黄酒评分、扣分标准表(共1页) 1页