- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章预处理命令与程序组织
第11章 预处理命令与程序组织
回顾
文件的定义 FILE *fp;
文件的打开 fopen
文件的读和写 fscanf/fprintf
文件的关闭 fclose
教学目标
编译预处理
不带参数的宏定义
带参数的宏定义
编译预处理
功能:一个源文件可将另一个源文件的内容全部包含进来
一般形式:
#include 文件名
#include 文件名
处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的文件做一个源文件编译。
直接按标准目录搜索
先在当前目录搜索,再搜索标准目录
可指定路径
编译预处理
被包含文件内容
源文件(*.c)
头文件(*.h)
文件包含可嵌套
宏定义
数据结构定义
函数说明等
不带参数的宏定义
一般形式: #define 宏名 [宏体]
功能:用指定标识符(宏名)代替字符序列(宏体)
定义位置:任意(一般在函数外面)
作用域:从定义命令到文件结束
#define YES 1
#define NO 0
#define PI 3.1415926
#define OUT printf(Hello,World);
宏体可缺省,表示宏名定义过或取消宏体
不带参数的宏定义
#undef可终止宏名作用域: #undef 宏名
不带参数的宏展开
宏展开:预编译时,用宏体替换宏名---不作语法检查
引号中的内容与宏名相同也不置换
如 if(x==YES) printf(correct!\n);
else if (x==NO) printf(error!\n);
展开后: if(x==1) printf(correct!\n);
else if (x==0) printf(error!\n);
例 #define PI 3.14159
printf(2*PI=%f\n,PI*2);
宏展开:printf(2*PI=%f\n,3.14159*2);
不带参数的宏展开
宏定义可嵌套,不能递归
宏定义中使用必要的括号()
#define MAX MAX+10 (?)
例 #define WIDTH 80
#define LENGTH WIDTH+40
var=LENGTH*2;
宏展开:var= 80+40 *2;
例 #define WIDTH 80
#define LENGTH (WIDTH+40)
var=LENGTH*2;
宏展开:var= (80+40) *2;
带参数的宏定义
一般形式: #define 宏名(参数表) 宏体
宏展开:形参用实参换,其它字符保留
宏体及各形参外一般应加括号()
不能加空格
例 #define S(a,b) a*b
………..
area=S(3,2);
宏展开: area=3*2;
例 #define S (r) PI*r*r
相当于定义了不带参宏S,代表字符串(r) PI*r*r
带参数的宏定义
例 #define POWER(x) x*x
x=4; y=6;
z=POWER(x+y);
宏展开:z=x+y*x+y;
一般写成: #define POWER(x) ((x)*(x))
宏展开: z=((x+y)*(x+y));
带参数的宏定义
# include stdio.h
# define f(x) x*x*x
int main()
{ int a=3,s,t;
s=f(a+1);
t=f((a+1));
printf(%d,%d\n,s,t);
return 0;
}
带参数的宏定义
# include stdio.h
# define PI 3.5;
# define S(x) PI*x*x;
int main()
{ int a=1,b=2;
printf(%4.1f\n,S(a+b));
retu
您可能关注的文档
最近下载
- SAASD:全球人工智能社会发展研究报告(2025).pdf
- 铁工电202185号国铁集团关于加强涉铁工程管理的指导意见.pdf
- 金蝶云星辰初级考试题库.docx VIP
- GB_T 13912-2020 金属覆盖层 钢铁制件热浸镀锌层 技术要求及试验方法.docx VIP
- 《环境影响评价技术导则 水利水电工程》HJ/T 88-2003.pdf VIP
- 初三化学第一节讲义讲述.doc VIP
- Hypertherm海宝 Powermax125等离子弧切割系统操作手册 中文.pdf VIP
- 可用性工程报告 - 医疗器械.docx VIP
- 汽车空调涡旋式制冷压缩机.ppt VIP
- 2025年山东青岛海关缉私局辅警招聘考试笔试试题(含答案).pdf
文档评论(0)