- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 编译预处理
•编译预处理的含义
•宏定义和宏替换
•文件包含
•条件编译
9.1编译预处理
C语言提供的编译预处理命令主要有以下
三种:宏定义命令、文件包含命令和 条件编
译命令。为了与一般C语言语句相区别,预处
理命令必须以符号“#”开头,一个预处理命令
单独占一行,每行的末尾不得加“;”号,以区
别于C语句。
9.2宏定义和宏替换
在C语言源程序中允许用一个标识符来表
示一个字符串,称为“宏” 。被定义为宏的标识
符称为宏名。在编译预处理时,对程序中所有
出现的宏名,都用宏定义中的字符串去替换,
这称为“宏替换”或“宏展开” 。
9.2.1 符号常量的宏定义
用一个指定的标识符来代表一个字符串,其
定义的一般形式为:
#define 标识符 字符串
这里,#define表示是宏定义命令。
例如:
#define PI 3.1415
功能是定义一个符号常量(宏名)PI代替
字符串3.1415 。
例9.1宏定义的使用
#define NAME Welcome to use C. /* NAME
是宏名 */
main()
{ printf(NAME);
}
程序运行结果:
Welcome to use C.
使用宏定义的说明:
(1) 宏名一般用大写字母表示,变量名通常用小写字
母表示,但并非是规定。
(2) 宏展开时将宏名替换为字符串,可以是常数,也
可以是表达式,预处理程序对它不作任何检查。
(3) 宏定义不是语句,在行末不必加分号,如加上分
号则连分号也一起替换。
4 )在宏定义和宏替换时,可以使用已经定义的宏名。
例9.3使用已定义的宏定义。
#define A 2
#define B 3
#define S (A+B )*2 /* A,B是已定义的宏名 */
main()
{ printf(The result is:%d\n,S);
}
程序运行结果:
The result is: 10
9.2.2 带参数的宏定义
C语言允许宏带有参数。带参数的宏定义一般
形式为:
#define 宏名(参数表) 字符串
其中的字符串中含有参数表中所指定的参
数。带参数的宏调用的一般形式为:
宏名(实参表);
例9.5 从键盘上输入两个数据,比较大小
并输出较大的数,定义宏实现。
#define MAX(x,y) (xy)?x:y
main()
{ int a,b,max;
printf(Please Input a ,b: );
scanf(%d%d,a,b);
max=MAX(a,b);
printf(Max=%d\n,max);
}
程序运行结果:
Please Input a ,b: 10 20
Max=20
9.3文件包含
文件包含是指一个源文件可以将另外一个源
文件的全部内容包含进来。其命令的一般形式
如下所示:
#include 文件名
或
#include 文件名
其中,文件名是被包含文件的文件名,它是
一个磁盘文件。
9.4 条件编译
预处理程序提供了条件编译的功能。可以按不同的条件
去编译不同的程序部分,因而产生不同的目标代码文
件。
条件编译命令有以下几种形式。
1.第1种形式
#ifdef 标识符
程序段1
#else
程序段2
#endif
9.4 条件编译
2. 第2种形式
#ifndef 标识符
程序段1
#else
程序段2
#endif
与第一种形式的区别是将“ifdef”改为“ifndef” 。
9.4 条件编译
3. 第3种形式
#if 常量表达式
程序段1
#else
程序段2
#endif
功能:如常量表达式的值为真(非0),则对程序段
1 进行编译,否则对程序段2进行编译。其中的
else部分可以省略。
例9.12
您可能关注的文档
- Access2007数据库应用第10章.pdf
- Access2007数据库应用第11章.pdf
- Access2007数据库应用第12章.pdf
- Access2007数据库应用第13章.pdf
- Access数据库应用基础与实训教程第1章数据库基础知识.pdf
- Access数据库应用基础与实训教程第2章Access2003基础知识.pdf
- Access数据库应用基础与实训教程第4章Access数据表的操作.pdf
- Access数据库应用基础与实训教程第5章Access查询及其应用.pdf
- Access数据库应用基础与实训教程第6章窗体的设计.pdf
- Access数据库应用基础与实训教程第7章报表.pdf
- 2025贵州黔南州都匀市中小企业融资担保有限责任公司拟聘用人员考前自测高频考点模拟试题及完整答案详解.docx
- 2025贵州铁路投资集团有限责任公司招聘35人模拟试卷及参考答案详解1套.docx
- 2025贵州优建建筑劳务有限公司考前自测高频考点模拟试题及答案详解1套.docx
- 2025贵州银行金融科技相关岗位招聘10人考前自测高频考点模拟试题附答案详解.docx
- 2025第十三届贵州人才博览会沿河土家族自治县县管国有企业引才17人考前自测高频考点模拟试题及完整答.docx
- 2025赤峰环保投资有限公司招聘3人考前自测高频考点模拟试题及答案详解1套.docx
- 2025贵州安顺市社会科学界联合会招聘公益性岗位人员考前自测高频考点模拟试题及完整答案详解1套.docx
- 2025贵州金丽农业旅游产业发展集团有限公司招聘经理层高级管理人员(财务总监)1人考前自测高频考点模.docx
- 2025贵州黔东南州剑河县顺诚公司紧急招聘长期搔菌人员15人考前自测高频考点模拟试题及参考答案详解.docx
- 2025黑龙江东北林业大学土木与交通学院派遣人才招聘1人模拟试卷及参考答案详解.docx
文档评论(0)