预处理命令

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

LOGO预处理命令C语言高级应用本章内容宏定义文件包含条件编译2/34内容进度宏定义文件包含条件编译宏定义概念:用一个指定的标识符来代表一个字符串宏定义的一般形式:#define标识符字符串例:#definePI3.1415926标识符:宏名分类不带参数的宏定义带参数的宏定义终止宏定义不带参数的宏主义一般形式:#define标识符字符串例:#defineARRAY_SIZE1000intarray[ARRAY_SIZE];应用举例(Demo_1)#includestdio.h#definePI3.1415926voidmain(){floatl,s,r,v;printf(inputradius:);scanf(%f,&r);l=2.0*PI*r;s=PI*r*r;v=4.0/3*PI*r*r*r;printf(l=%10.4f\ns=%10.4f\nv=%10.4f\n,l,s,v);}应用举例(Demo_2)/*可以在宏定义中引用已定义的宏名*/#includestdio.h#defineR3.0#definePI3.1415926#defineL2*PI*R#defineSPI*R*Rvoidmain(){printf(L=%f\nS=%f\n,L,S);}带参数的宏定义一般形式:#define宏名(参数表)字符串例:#defineS(a,b)a*b…………area=S(3,2);/*area=S(3,2)可展开为area=3*2;*/应用举例(Demo_3)9/34#includestdio.h#definePI3.1415926f#defineS(r)PI*r*rvoidmain(){floata,area;a=3.6f;area=S(a);printf(r=%f\narea=%f\n,a,area);}应用举例(Demo_4)10/34/*Demo_4*//*可以通过宏展开得到若干个结果*/#includestdio.h#definePI3.1415926f#defineCIRCLE(R,L,S)L=2*PI*R;S=PI*R*Rvoidmain(){floatr,l,s;printf(InputRofCircle:);scanf(%f,&r);CIRCLE(r,l,s);printf(r=%6.2f,l=%6.2f,s=%6.2f\n,r,l,s);}宏定义注意设计带参数的宏定义时,应适当地考虑实参为表达式的情况设计带参数的宏定义时,宏名和形参的括号之间不能有任何形式的空格设计带参数的宏定义时,若实参为表达式,并不会事先计算表达式的值,而是简单地将表达式代入形参,然后再计算宏定义是在编译前进行的,展开时并不分配内存单元宏名没有类型,宏的参数也没有类型可以定义空的宏,如:#defineMY_SYMBOL11/34终止宏定义一般形式:#undef宏名例:#defineG9.8voidmain(){……}#undefGf1(){……}G的有效范围应用举例(Demo_5)13/34/*Demo_5*/#includestdio.h#definePI3.1415926fvoidfn1(){printf(PI=%f\n,PI);}#undefPIvoidmain(){printf(PI=%f\n,PI);}内容进度宏定义文件包含条件编译14/34文件包含一般形式:#include文件名#include“文件名”两种使用方式的区别:包含库文件一般使用第一种形式,编译器在系统库文件所在的目录查找包含的文件。自己编制的函数一般使用第二种形式,编译器从当前目录下查找包含文件,找不到则再到库文件所在的目录查找。15/34应用举例16/34#include“Header1.h“Header1.h#include“Header2.h“Header1.h#include“Header1.h“Header2.h自包含(出错)循环包含(出错)文件包含头文件类型头文件类型Alloc.h动态地址分配函数Mem.h内存操作函数Bios.hROM基本输入输出函数Share.h文件共享Conio.h屏幕操作函数Stdio.h基本I/O函数Ctype.h字符操作函数Stdlib.h标准库函数Dir.h目录操作函数String.h字符串函数Graphics.h图形函数Time.h系统时间函数Math.h数学函数17/34内容进度宏定义文件包含条件编译18/34条件编译作用:可以只让程序的部分代码参与编译一般形式:19/34#ifdef宏代码1#else代码2#endif#ifndef宏代码1#else代码2#endif#if表达式代码1#else代码2#endif条件编译另一种形式:例:ConditionCompileWinver20/34#ifdef宏代码#endif#ifndef宏代码#endif#if表达式代码1#endif作业定义一个带参数和宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。输入两个整数,求它们相除的余数。用带参数的宏来实现,编程序。用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出:一为原文输出;一为将字母变成其下一字母(’a’变成’b’,……,’z’变成’a’),其他非字母字符不变。用#define命令来控制是否要译成密码。例如:#defineCHANGE1则译出密码。若#defineCHANGE0则不译成密码,按原码输出。21/34

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功