- 1、本文档共29页,可阅读全部内容。
- 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.1 宏定义与符号常量;9.1.1 无参宏定义;;[例1] 宏替换的应用;3.说明
(1)宏名一般用大写字母表示,以示与变量区别。
(2)宏定义不是C语句,所以不能在行尾加分号。
(3)在宏展开时,预处理程序仅以按宏定义简单替换宏名,而不作任何检查。如果有错误,只能由编译程序在编译宏展开后的源程序时发现。
(4)宏定义命令#define出现在函数的外部,宏名的有效范围是:从定义命令之后,到本文件结束。通常,宏定义命令放在文件开头处。
(5)在进行宏定义时,可以引用已定义的宏名 。
(6)对双引号括起来的字符串内的字符,即使与宏名同名,也不进行宏展开。
;9.1.2 符号常量;符号常量示例;[例2] 输入圆的半径,求圆的周长、面积和球的体积。要求使用无参宏定义圆周率。;9.1.3 有参宏定义;有参宏定义示例;有参宏定义实例;例5:宏定义与函数调用的区别
#define SQ2(y) ((y)*(y)) //宏定义
SQ1(int y) //函数定义
{ return ((y)*(y));
}
void main()
{ int i=1,j=1;
while (i=10)
printf(“%d\t”,SQ1(i++));
while(j=10)
printf(“%d\t”,SQ2(j++));
}
;3.说明
(1)定义有参宏时,宏名与左圆括号之间不能留有空格。否则,C编译系统将空格以后的所有字符均作为替代字符串,而将该宏视为无参宏。
(2)有参宏的展开,只是将实参作为字符串,简单地置换形参字符串,而不做任何语法检查。在定义有参宏时,在所有形参外和整个字符串外,均加一对圆括号。
;有参宏与有参函数的区别;9.2 文件包含;3.文件包含的用途
一个大程序,通常分为多个模块,并由多个程序员分别编程。有了文件包含处理功能,就可以将多个模块共用的数据(如符号常量和数据结构)或函数说明,集中到一个单独的文件中。这样,凡是要使用其中数据或调用其中函数的程序员,只要使用文件包含处理功能,将所需文件包含进来即可,不必再重复定义它们,从而减少重复劳动。;4.说明
(1)编译预处理时,预处理程序将查找指定的被包含文件,并将其复制到#include命令出现的位置上。
(2)常用在文件头部的被包含文件,称为“标题文件”或“头部文件”,常以“h”(head)作为后缀,简称头文件。在头文件中,除可包含宏定义外,还可包含外部变量定义、结构类型定义等。
(3)一条包含命令,只能指定一个被包含文件。如果要包含n个文件,则要用n条包含命令。
(4)文件包含可以嵌套,即被包含文件中又包含另一个文件。;5. 头文件的定义与使用
用户显式地保证程序一致性的基本方法是保持声明的一致性。
保持声明一致性的简单办法是提供一个头文件,让头文件中的信息作为各模块之间的接口信息,有利于提供可重用的模块。
使用头文件将把程序分为程序头和程序体两部分。;好的头文件应该包括:;好的头文件不能包含以下内容:
·一般函数定义
·数据定义,如int a;
·常量聚集定义,如 const tbl[]={/* … */};
;9.3 条件编译;9.3.1 #ifdef ~ #endif命令;示例6;9.3.2 #ifndef ~ #endif命令;例7:#define NUM 10
struct stu{int num; char *name; };
#define STUDENT struct stu
main() {
STUDENT *p;
p=(STUDENT *)malloc(sizeof(STUDENT));
p-num=6688; p-name=“Li Jie”;
#ifndef NUM
printf(“Number=%d\n”,p-num);
#else
printf(“Name=%s\n”,p-name);
#endif
free(p);
};9.3.2 #if ~ #endif;例8: 输入一个
您可能关注的文档
- 第4章课堂练习题.ppt
- 第3章防水材料[2011.3.8].ppt
- 第5单元遗传的基本规律第15课时孟德尔的豌豆杂交实验[一].ppt
- 第4课昂扬进取的社会面貌.ppt
- 第5单元遗传的基本规律第16课时孟德尔的豌豆杂交实验[二].ppt
- 第1章资料2技术介绍.ppt
- 第4章注意2012年10月11日.ppt
- 第5章【自然地理环境的整体性和差异性】第14讲.ppt
- 第5讲嵌入式C语言存储器及指针.ppt
- 第5篇[茶馆设计篇之10-主题音乐背景音乐营造].ppt
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
最近下载
- 叉车司机 国家职业能标准.doc VIP
- 初中物理 2023-2024学年云南省曲靖市八年级(下)期末物理试卷.pdf VIP
- Siemens 西门子家电 洗衣干衣机 WN54A3X00W 产品功能表.pdf
- 工会基础知识考试题库【附答案】.docx VIP
- 履带吊安拆专项施工方案(专家会) (1).docx VIP
- 会展搭建供应商入围项目 投标方案(技术标115页).docx VIP
- 11BS3给水工程华北标图集.docx VIP
- DB37T 4199-2020 中小学校食堂建设与设备配置规范.docx VIP
- 长输管道工程项目管理的建议及对策.docx VIP
- 4.严重违法行为平台服务停止制度.pdf VIP
文档评论(0)