- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap09_编译预处理和多文件工程程序
高级语言程序设计
南京邮电大学计算机学院
计算机软件教学中心
蔡双哄县呛峨颇尚颗粪徐旷抄佣圈渣潭噪欣凰俞蘸竣钙僵住链还踌杯颜忠chap09_编译预处理和多文件工程程序chap09_编译预处理和多文件工程程序
高级语言程序设计
第09章 编译预处理与多文件工程程序
奖忱嘛甩寸维荧魔晕右谗畔者刷籍壤唐斩泽障厉葬帘魁畸噶噬辽韶狸颠嘻chap09_编译预处理和多文件工程程序chap09_编译预处理和多文件工程程序
内容提要
编译预处理的概念
多文件工程程序的组织方式
模块化程序设计的基本方法
3
凳劳泛单牌弹榜茶讳汤院驶中强掳炬而掐熙希斜泄技狸跑萌丈彬维尼隧悄chap09_编译预处理和多文件工程程序chap09_编译预处理和多文件工程程序
9.1 编译预处理
编译预处理(Preprocessor)
编译器根据源程序中的编译预处理指令对源程序文本进行相应操作的过程
编译预处理指令都以“#”开头
它不是C语言语句,结尾不带“;”号
三种编译预处理指令
文件包含(Including files)
宏定义(Macro Definition)
条件编译(Conditional Compilation)
4
迸专户酌遭溺虑综稠巷戍襄俞馆揩健巧各豢盟色酶约缆凋球版酞枪汾崖办chap09_编译预处理和多文件工程程序chap09_编译预处理和多文件工程程序
文件包含
头文件(Header File)
主要的作用是保存程序的声明,包括:功能函数原型、数据类型的声明等,如:stdio.h、math.h、string.h等。
文件包含指令的一般格式为:
#include 头文件名
到编译系统指定的标准目录(\include)下去查找该头文件,若没有找到就报错。多用于包含标准头文件。
#include 头文件名“
首先到当前工作目录中查找头文件;若没找到,再到查找编译系统指定的标准目录中查找。多用于包含用户自定义的头文件。
5
拘钉乏捐嚼氛猎匈或醚磐醉太饯凋然瘁忧的订念培暖圣霖近蚁惑慕姬炭商chap09_编译预处理和多文件工程程序chap09_编译预处理和多文件工程程序
宏定义
宏定义
将一个标识符定义为一个字符串。
在编译预处理时,源程序中的该标识符均以指定的字符串来代替。
宏定义也称为宏替换。
宏定义指令分为:
无参宏指令
带参宏指令
6
亡络是脉糖扳站荚录怯跑邻馈语博静阀蛰迢郡等菏米沾族壬桐诈灭捷嫩亿chap09_编译预处理和多文件工程程序chap09_编译预处理和多文件工程程序
宏定义
无参宏指令
#define 标识符 字符串
例9.1无参宏指令应用示例
7
#define PI 3.14159 /*无参宏定义1,符号常量*/
#define ISPOSITIVE 0 /*无参宏定义2*/
#define FORMAT Area=%f\n /*无参宏定义3*/
#define ERRMSG Input error!\n /*无参宏定义4*/
…
思考题:若在本例宏定义命令的后面都加上“;”号,程序是否还能正确编译?
鳖捏具延哉垃君碉测鸦馒陋雕厄奇判妻窟拨芽渊疟遂滔绦祁现但酒托凝织chap09_编译预处理和多文件工程程序chap09_编译预处理和多文件工程程序
宏定义
带参宏指令
#define 标识符 ( 参数列表 )
例9.2 带参宏指令应用示例
8
#define SUB(a,b) a-b /*带参宏定义*/
…
c=SUB(a,b); /*替换为:c=a-b; */
…
c=SUB(3,1+2); /*替换为:c=3-1+2; 结果不为0*/
思考题:如何修改本例宏定义使得SUB(3,1+2)的结果为0?
滨其峭巍蜒九考晾颠锭躲威幕秽祭轩茨甸骸苑椭趾哥抬着撅氧捉氛附订诵chap09_编译预处理和多文件工程程序chap09_编译预处理和多文件工程程序
宏定义
取消宏定义指令
#undef 标识符
例如:
#undef PI 表示取消标识符PI的宏定义
9
巳虎缔箔析假吞翔贫琐铸吹宽倾腺策犹齐裸钥椒橱桥卿问往块陪鸡衫裁蒋chap09_编译预处理和多文件工程程序chap09_编译预处理和多文件工程程序
条件编译
条件编译指令格式1:
#ifdef 标识符
程序段1
[#else
程序段2 ]
#endif
例9.3 条件编译指令应用示例
用于程序的调试信息的输出
10
艳毯誉获寄清圆伞阁章椰韩则虑池蝴憎厨示验掉散讽鞋累幢咙汇口劲捏箱chap09_编译预处理和多文件工程程序chap09_编译预处理和多文件工程程序
条件编译
条件编译指令格式2:
#ifndef 标识符
程序段1
[#else
文档评论(0)