第十二章 编译预处理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二章 编译预处理

第12章 编译预处理 概 述 12.1 文件包含 “文件包含”示意图 file1.c file2.c file1.c 包含 #include“file2.c” B A B A (a) (b) (c) 假如file1.c文件中的内容如下: int a,b,c; float m,n,p; char r,s,t; file2.c文件的内容如下: #includefile1.c main() {……} 经过编译预处理后,file2.c文件的内容为: int a,b,c; float m,n,p; char r,s,t; main() {……} 在使用编译预处理#include语句时,需要注意的几个问题如下: (1) 当#include语句指定的文件中的内容发生改变时,包含文件的所有源文件都应该注意重新进行编译等处理。 (2) 文件包括可以嵌套使用,即被包括的文件中还可以使用#include语句。 (3) 由#include语句指定文件中可以包含任何语言成分,通常将经常使用的、具有公共性质的符号常量、带参数的宏定义以及外部变量等集中起来放在这种文件中,这样可以避免一些重复操作。 (4)被包含的文件通常是源文件,而不是目标文件。 11.2 宏定义 3 终止宏定义 宏命令#undef用于终止宏定义的作用域。一般形式为:? #unfine 宏名 例如:? #define area(r) (PI*r*r) main() {……} #undef area(r) func() {……} 由于在函数func()之前,使用#undef终止宏名area(r)的作用,在函数func()中area(r)不再起作用。#undef也可以用于函数内部。 例 宏替换与函数调用的区别。 #define MUL(a,b) a+b int m(int a,int b) { return (a*b); } main() { printf(“%d\n”,MUL(1+2,5-4)); printf(“%d\n”,m(1+2,5-4)); } 程序的运行结果为: 7 3 原因显而易见,调用MUL宏时,计算的表达式是1+2*5-4,而调用m函数时,计算的表达式的是(1+2)*(5-4)。 12.3 条 件 编 译 带有#elif的条件编译 定义的一般形式为:? #if 表达式1 程序段1 #elif表达式2 程序段2 #elif表达式3 程序段3 …… #else 程序段n #endif 这里的#elif的含义是“else if”。 例 输入一个口令,根据需要设置条件编译,使之在调试程序时,按原码输出;在使用时输出“*”号。 #define DEBUG void main() {char pass[80];int i=1; printf(\nplease input password:); do{i++; pass[i]=getchar(); #ifdef DEBUG putchar(pass[i]); #else putchar(*); #endif }while(pass[i]!=\r); …… } * * 本章要点 熟练掌握include命令的含义和用法 理解#define命令的使用 了解各种条件编译(#if、#else、#endif、#ifdef和#undef等)的意义及用法 本章难点 文件包含命令#include的使用 带参宏与函数的区别 区分条件编译预处理指令的使用场合 一、编译预处理的概念 C语言允许在程序中使用几种特殊的命令(它们不是一般的C语句),在C编译系统对程序

文档评论(0)

ajgoaw + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档