已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章第八章 编译预处理编译预处理 编译预处理(命令): #号开头的一些命令,在编译开始之前得到处理, 用以辅助编译器的编译工作。 一条编译预处理命令占用一行,其结尾不使用“;” 作为结束符。 C语言提供以下三种编译预处理命令:宏定义、文 件包含、条件编译。 编译预处理编译预处理 宏定义:使用标识符来替代字符串。 其中标识符成为宏名,宏名习惯用大写字母。 宏定义: 不带参数的宏定义 带参数的宏定义 宏定义 宏定义 不带参数的宏定义 不带参数的宏定义 定义格式: #define 宏名 字符串 例:#define PI 3.1415926 s=2*PI*8; 说明: 1.字符串可以是任意字符串。 不带参数的宏定义 不带参数的宏定义 说明: 2.宏定义可以放在源程序的任意位置,但应该放在使用宏 名的函数之前。 3.可以嵌套定义 例:#define A 3 #define B A/2 不带参数的宏定义 不带参数的宏定义 说明: 4.在宏定义的字符串中有运算符时,为保证替换结果正确 ,可在适当位置加上括号。 例:#define SUM 3+4+5 #define SUM (3+4+5) s=SUM/2; s=3+4+5/2 s=(3+4+5)/2 不带参数的宏定义 不带参数的宏定义 说明: 5.在字符串常量中出现的与宏名相同的字符串不认为是宏。 例:#define S (3+4+5) printf(“S=%dn”,S); printf(“S=%dn“,(3+4+5); 不带参数的宏定义 不带参数的宏定义 说明: 6.宏名的作用域从定义开始到文件结束为止,但也可以用 #undef结束宏定义。 例:#define PI 3.1415926 main( ) #undef PI f( ) 不带参数的宏定义 不带参数的宏定义 说明: 7.如果宏定义中的字符串过长,可以加“”(续行符)进行 换行。 例:#define STR “In this part there is a short passage with five questions.” printf(STR); 带参数的宏定义带参数的宏定义 定义格式: #define 宏名(参数表) 字符串 例: #define PI 3.1415926 #define S(r2,r1) PI*(r2*r2-r1*r1) area=S(5,3); area=3.1415926*(5*5-3*3); 带参数的宏定义 带参数的宏定义 说明: 1.在宏定义的字符串中有运算符时,为保证替换结果正确 ,可给字符串中参数加上括号。 例:#define S(r2,r1) PI*(r2*r2-r1*r1) #define S(r2,r1) PI*(r2)*(r2)-(r1)*(r1) area=S(5+4,4+3); area=3.1415926*(5+4*5+4-4+3*4+3); area=3.1415926*(5+4)*(5+4)-(4+3)*(4+3); 带参数的宏定义 带参数的宏定义 说明: 2.如果宏调用的结果还与其它的操作数进行运算,为保证 替换结果正确,可在宏定义的字符串外加上括号。 例:#define A(r1,r2) r1+r2 #define A(r1,r2) (r1+r2) b=A(2,4)/2; b=2+4/2; b=(2+4)/2; #define ISODD(a) (a)%2=1)?1:0) main() int a,i,sum=0; for(i=1;i /*系统路径搜索被包含文件*/ 2. 文件包含的作用是把该命令所指的另一个文件包含 到当前所在的程序文件中。 文件包含 文件包含 说明: (1) 文件包含可以嵌套。 (2) 一个#include命令只可 以包含一个头文件。 a.c文件: #include main() b.h文件: #include #include 文件包含 文件包含 条件编译:按照一定的条件控制源程序中的某些程序行是否参 加编译。可以通过条件编译逐段调试程序。 条件编译与分支结构的区别: 三种形式: 1、#if、#else、#elif、#endif命令 2、#ifdef、#else、#endif命令 3、#ifndef、#else、#endif命令 条件编译条件编译 格式1 #if 条件 程序段1 #else 程序段2 #endif 格式2 #if 条件 程序段 #endif 格式3 #if 条件1 程序段1 #elif 条件2 程序段2 #elif 条件n 程序段n #else 程序段n+1 #endif 1. #if1. #if、#else#else、#elif#elif、#endif#endif命命令令 例:编写一个程序,对输入的20个整数,利用条件编译使该 程序可以求这20个数中的奇数和,也可以求偶数和。 #define FLAG 0 main() int a20,i,sum=0; for(i=0;i20;i+) scanf(“%d“, #if FLAG for(i=0;i20;i+) if(ai%2=1) sum=sum+ai; printf(“%dn“,sum); #else for(i=0;i20;i+) if(ai%2=0) sum=sum+ai; printf(“%dn“,sum); #endif #define DEEPTH 1 #define DEEPTH #ifdef DEEPTH #define STACK 100 #else #define STACK 150 #endif 2. #ifdef2. #ifdef、#else#else、#endif#endif命令命令 格式1 #ifdef 宏名 程序段1 #else 程序段2 #endif 格式2 #ifdef 宏名 程序段 #endif 例:编写一个程序,对输入的20个整数,利用条件编译使该 程序可以求这20个数中的奇数和,也可以求偶数和。 #define FLAG 0 main() int a20,i,sum=0; for(i=0;i20;i+) scanf(“%d“, #ifdef FLAG for(i=0;i20;i+) if(ai%2=1) sum=sum+ai; printf(“%dn“,sum); #else for(i=0;i20;i+) if(ai%2=0) sum=sum+ai; printf(“%dn“,sum); #endif 3 3. . #ifndef#ifndef、#else#else、#endif#endif命令命令 格式1 #ifndef 宏名 程序段1 #else 程序段2 #endif 格式2 #ifndef 宏名 程序段 #endif 例:编写一个程序,对输入的20个整数,利用条件编译使该 程序可以求这20个数中的奇数和,也可以求偶数和。 #define FLAG 0 main() int a20,i,sum=0; for(i=0;i20;i+) s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年西安市第一医院麻醉科招聘考试真题
- 新高考语文一轮复习古诗文默写+阅读闯关练习第14篇《礼运》(原卷版)
- 2023年深圳市南山区教育幼教集团招聘考试真题
- 质检年终总结
- 作品编辑发行转让协议
- 2024版商标使用授权协议书
- 2023年金陵科技学院招聘专职辅导员考试真题
- 2023年合肥市妇幼保健院招聘专业工作人员考试真题
- 2024年宽带无线接入网项目建议书
- 五年级数学(小数乘法)计算题专项练习及答案汇编
- 音乐欣赏PPT全套完整教学课件
- 第二章作物需水量和灌溉用水量
- 深圳航空飞行品质监控系统(FOQA)需求规格说明书 V2.0
- 消防员培训汇总课件
- 带强调事项段的保留意见的审计报告参考格式1400字
- 妇联婚姻家庭矛盾纠纷化解工作汇报总结报告4篇
- 六年级数学老师家长会课件PPT
- 非计划性拔管的应急预案
- 幼儿园课件:时钟国王
- 湘美版高中美术-《变化中的审美》课件
- WSET二级及考试习题集锦
评论
0/150
提交评论