文档详情

重庆大学《C语言程序设计》课件-第8章 编译预处理基础.ppt

发布:2025-04-11约4.62千字共18页下载文档
文本预览下载声明

第八章编译预处理基础C语言程序设计重庆大学C程序设计技术第一章C程序设计初步第二章C程序的基本控制结构第三章函数第四章数组和字符串第五章C程序文件处理基础第六章指针第七章结构体和联合体数据类型第八章编译预处理基础第九章枚举类型和位运算第八章编译预处理基础编译预处理:C编译系统在C源程序编译之前,进行的一些预加工,然后再将处理的结果和源程序一起进行编译,得到目标代码。编译预处理命令都是以“#”号开始8.1?宏定义预处理命令及其简单应用8.2文件包含预处理命令及其简单应用8.3条件编译预处理命令及其简单应用8.1?宏定义预处理命令及其简单应用8.1.1不带参数的宏定义#define8.1.2带参数的宏定义#define8.1.1不带参数的宏定义宏定义格式:#define宏标识符字符串宏调用格式:宏标识符宏调用功能:在宏定义作用范围内,所有宏标识符用指定字符串替换。宏标识符也称为宏名或符号常量,习惯使用大写字母书写。例8.1宏定义预处理示例。#includestdio.h#definePI3.1415926#defineR2.0voidmain(){ doublecircum(); doublearea(); circum(); area(); printf(Circum=%f\n,circum()); printf(Area=%f\n,area());}doublecircum(){ return2.0*PI*R;}doublearea(){ returnPI*R*R;}doublecircum(){return2.0*3.1415926*2.0;} doublearea(){return3.1415926*2.0*2.0;}使用宏定义应注意:1).宏定义中字符串:字符串常量、表达式、语句、已定义的其它宏。例如宏定义: #definePI 3.1415926 #define R 5.0 #defineCirc retrun(2.0*PI*R);2).宏定义撤消:重新定义只含宏标识符的#define语句来撤消宏定义。例如:#defineR//撤消对R的宏定义3).源程序代码出现的宏名,不是都进行宏调用替换。例如:#defineloc12345 intlocal; 不替换成int12345al;#definePI3.14printf(“ThevalueofPIis:%f\n”,PI);不替换成printf(“Thevalueof3.14is:%f\n”,3.14);4).宏调用仅仅是一个替换例8.1宏调用替换问题的理解示例。#includestdio.h#defineN2#defineMN+2#defineMN2*Mvoidmain(){ intx=MN; printf(x=%d\n,x); }结果:x=68.1.1?不带参数的宏定义带参数宏定义格式:#define宏标识符(形参表)表达式字符串 带参数宏调用格式:宏标识符(实参表) 带参数宏调用功能:在宏定义范围内,宏识符用指定的表达式字符串替换,然后用宏调用中的实际参数替换表达式字符串中的形式参数。例8.2代参数宏定义使用示例。例8.3宏调用替换问题的理解示例。#includestdio.h#definePI3.145926#defineS(r)PI*r*rvoidmain(){ doublea,b,area1,area2; a=3.3; b=3.2; area1=S(a); area2=S(a+b); printf(area1=%f\narea2=%f\n,area1,area2);}程序运行结果为:area1=34.259134area2=24.141556#includestdio.h#defineMin(x,y)(x)(y)?(x):(y)voidmain(){ inta=1,b=2,c=3,d=4,

显示全部
相似文档