- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言课件编译预处理.ppt
* 第 9 章 编译预处理 1. 目的、要求 了解内部函数和外部函数。 了解编译预处理的作用,掌握宏替换。 2. 重点、难点 宏替换 文件包含 条件编译 1)C程序常常由多个源文件组成,根据一个源文件中的函数能否被其它文件所调用,可将函数分为内部函数和外部函数。 2)为了便于程序的可移植性和增加程序的灵活性,C语言又提供了编译预处理的功能,包括宏定义、文件包含和条件编译。 内部函数和外部函数 以是否能被其它源文件调用来区分。 1. 内部函数(又称静态函数):只能被本文件中的其它函数调用。定义时加static说明。一般形式为: static 类型标识符 函数名(形参表) 如:static int fun(int a,int b) 2. 外部函数:可为其它源文件中的函数引用。定义时用extern说明,省略extern则隐含为外部函数。 文件1:file1.c #includestdio.h main() { extern enter_string(char str[80]); extern delete_string(char str[],char ch); extern print_string(char str[]); /*以上说明本文件要用到在其它文件中定义的函数*/ char c; char str[80]; enter_string(str); printf(请输入要删除字符:); scanf(%c,c); delete_string(str,c); print_string(str); } 例:使用外部函数,删除一个字符串中的字符,该字符由键盘输入。 文件2:file2.c #include stdio.h /*定义外部函数enter_string*/ enter_string(char str[80]) { printf(请输入一串字符:); gets(str); /*读入字符串str*/ } 文件3:file3.c /*定义外部函数delete_string*/ #include stdio.h extern delete_string(char str[],char ch) {int i,j; for (i=j=0;str[i]!=\0;i++) if (str[i]!=ch) {str[j]=str[i]; j++; } str[j]=\0; } 注意:在需要调用此函数的文件中用extern说明。 多个源文件连接成一个可执行程序的方法: 1. 分别编译成目标文件再连接; 2. 将几个源文件包含在一个源文件中。 文件4:file4.c /*定义外部函数print_string*/ #includestdio.h extern print_string(char str[]) { printf(删除后字符串为:); printf(%s\n,str); } 编译预处理 一、 宏定义 “编译预处理”是C编译系统的一个组成部分,提供以下3种预处理功能: 宏定义:用宏定义命令实现。 文件包含:文件包含命令实现。 条件编译:条件编译命令实现。 这些命令均用“#”开头,以区别于一般的C语句。 1、 不带参数的宏定义 用一个标识符(称为宏名)来代表一个字符串,一般形式为: #define 标识符 字符串 #define PI 3.1415926 #includestdio.h main() {float r,l,s,v; printf(input radius :); scanf(%f,r); l=2.0*3.14*r; s=3.14*r*r; v=4.0/3*3.14*r*r*r; printf(l=%10.4f\ns=%10.4f\nv=%10.4f\n,l,s,v); } [例1]:不带参数宏定义 2.0*3.14159*r 3.14159*r*r 4.0/3*3.14159*r*r*r #define PI 3.1415926 #define R 3.0 #define PI 3.1415926 #define L 2*PI*R #define S PI*R*R main() {printf(L=%f\nS=%f\n,L,S); } [例2]:宏置换 注意:即使与宏名相同,双引号内的字符不被置换。 printf(“L=%f\nS=%f\n”,2*3.1415926*
您可能关注的文档
最近下载
- 基于51单片机的智能台灯设计.doc
- 幼儿园课件:小老鼠和泡泡糖最终.pptx
- 2024最新国开《个人理财》形考题库.docx VIP
- 国家开放大学学前教育专业+毕业作业(幼儿园教学活动设计与指导)9.doc
- 第18课 从九一八事变到西安事变(课件).pptx VIP
- 酒店装配式装修技术规程.pdf VIP
- 2023年中国汉字听写大赛全部试题库及答案.pdf VIP
- 2024中国铁路成都局集团限公司招聘高校毕业生998人高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 人文英语3--An-absence-excuse-letter完整版.docx
- 神经工程学(天津大学)大学MOOC慕课 客观题答案.docx
文档评论(0)