- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常用解题技巧:预处理
预处理 预处理 预处理是C语言的一个重要特征。预处理功能可以改善程序设计环境,有助于程序的调试、修改和移植,有利于实现模块化的程序设计。 C语言提供3种预处理功能:宏定义、文件包含、条件编译 编译预处理命令不属于C语言的范畴,为表示区别,所有的编译预处理命令均以“#”开头,各占用1个单独的书写行,末尾不用“;”作结束符。如果一行写不了,可用反斜杠“\”和回车键结束,然后在下一行继续书写。它们可以出现在程序的任何位置,作用范围自出现的地方开始到源程序的末尾。 宏定义 宏定义是用1个标识符代替1串字符,从而使程序更加简洁。宏定义分为不带参数的宏定义和带参数的宏定义 不带参数的宏定义 #define 标识符 字符串其中,“#define”是宏定义命令,标识符即为宏名,宏名通常用大写字母书写,以区别于一般变量例如:#define PI 3.1415926 它的作用是用标识符PI来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的PI都用“3.1415926”代替。 宏定义 宏定义说明:1、宏名一般用大写字母表示,以区别一般变量2、宏展开时,仅是字符串替换,替换时并不进行计算,不作正确性检查,也就是说预编译不作任何语法检查3、使用宏定义来处理,可以增加程序的可读性,同时修改程序也比较方便4、程序中用双引号括起来的与宏名相同的内容,不进行替换 宏定义的嵌套 宏定义的嵌套就是用定义过的符号常量去定义另一个新的符号常量 例如:#define WIDTH 8#define LENGTH (WIDTH+4)如程序中出现如下语句:a=LENGTH*2;则a的值为24 注意:如果上面的句子中把第二句改下:#define LENGTH WIDTH+4则a的值会是多少呢? 带参数的定义 带参数宏定义不是进行简单的字符串替换,而是进行参数替换,定义形式为:#define 宏名(参数表) 宏体其中宏体中应包含参数表中的参数 例如:#define POWER(x) ((x)*(x)) a=POWER(2); 对带参数的宏定义展开过程是:将语句中的实参代替形参,如果宏体中的字符不是参数,则完整保留 带参数的宏定义 例题:#define P1(x) x*x#define P2(x) (x)*(x)#define P3(x) ((x)*(x))… … … … … …a=1;z1=P1(a+1);z2=P2(a+1);z3=P3(a+1);z4=4/P1(a+1);z5=4/P2(a+1);z6=4/P3(a+1); z1=3 z2=4 z3=4 z4=6 z5=4 z6=1 宏定义 在程序设计中,经常把反复使用的运算表达式甚至是某些操作定义为宏。例如:#define PRN printf(“\n”)#define MAX(x,y) ((x)(y)?(x):(y))#define ABS(x) ((x)=0?(x):(-x))#define FOR(i,n) for(i=0;in;i++) 补充说明:宏展开是在编译前进行的,在展开时不分配内存单元,也不进行值传递。宏不存在类型问题,宏参数也无类型。宏替换不占用运行时间,只占用编译时间 宏定义的解除 宏定义的作用域是从宏定义开始到程序结束。如果想把宏定义的作用域限制在程序的某个范围内,可以使用“#undef”解除已有的宏定义。其一般形式为:#undef 宏名 例如:#define FLAG 0 … … … … … … #undef FLAG 将“#define”和“#undef”配合使用,就可以把宏定义的使用限制在二者之间,因此也叫局部宏定义 “#undef”的另一个作用是重新进行宏定义。C语言中不能重复宏定义,但可以用“#undef”解除后重新定义 文件包含 文件包含的功能是把1个指定文件嵌入到现行的源程序文件中,再对嵌入后的源程序文件进行编译处理 文件包含格式:#include 文件名 或者 #include “文件名” 例如:#include stdio.h #include “file.c” 一般来说,如果是调用库函数就用尖括号,如果包含的是自己编写的文件,则用双引号。如文件不在目录中,双引号内可以给出文件路径。 文件包含 例如: #include stdio.h #include “user.c” main() { float r,s; scanf(“%f”,r); s=PI*r*r; printf(“s=%f\n”,s); } #define PI
您可能关注的文档
- 第7章 计算机数控系统.ppt
- 怀化工业高级技工学校人才队伍建设暨招生宣传活动总结.doc
- 新车车内空气污染防治探讨.pdf
- 逻辑与可编程控制课程设计报告.docx
- 《信息化管理与运作(专科必修)》总.doc
- 《DHTML》教学合同杨春霞--09级计科1、2班.doc
- 武汉市中考第22题的解题分析.doc
- 在VB60中调用MATLAB程序.pdf
- 小贪大失讲义.ppt
- 富强中心校主题班会活动计划20133.doc
- 《GB/Z 44363-2024致热性 医疗器械热原试验的原理和方法》.pdf
- GB/T 16716.6-2024包装与环境 第6部分:有机循环.pdf
- 中国国家标准 GB/T 44376.1-2024微细气泡技术 水处理应用 第1 部分:亚甲基蓝脱色法评价臭氧微细气泡水发生系统.pdf
- 《GB/T 44376.1-2024微细气泡技术 水处理应用 第1 部分:亚甲基蓝脱色法评价臭氧微细气泡水发生系统》.pdf
- GB/T 44376.1-2024微细气泡技术 水处理应用 第1 部分:亚甲基蓝脱色法评价臭氧微细气泡水发生系统.pdf
- 中国国家标准 GB/T 44315-2024科技馆展品设计通用要求.pdf
- GB/T 44305.2-2024塑料 增塑聚氯乙烯(PVC-P)模塑和挤塑材料 第2部分:试样制备和性能测定.pdf
- 《GB/T 44315-2024科技馆展品设计通用要求》.pdf
- GB/T 44315-2024科技馆展品设计通用要求.pdf
- GB/T 39560.9-2024电子电气产品中某些物质的测定 第9 部分:气相色谱-质谱法(GC-MS)测定聚合物中的六溴环十二烷.pdf
文档评论(0)