常用解题技巧:预处理.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

您可能关注的文档

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档