《C语言程序设计》课件——第8章 编译预处理.ppt
本章小结本章首先介绍了宏定义命令,然后介绍了文件包含命令,最后介绍了条件编译命令。通过本章的学习,读者应重点掌握以下知识。?掌握不带参数宏定义和带参数宏定义的具体方法。?文件包含是预处理的一个重要功能,它可用于将多个源文件连接成一个源文件进行编译,并生成一个目标文件。读者应掌握文件包含命令的具体使用方法。了解条件编译命令的具体使用方法。使用预处理命令非常便于程序的修改、阅读、移植和调试,也便于实现模块化程序设计。在编写较大程序时,善于利用预处理命令能够很好地提高程序的质量。8.3经典题型第8章编译预处理思政目标1、巩固知识根基经典题解涵盖编译预处理核心知识,学生通过练习巩固宏定义、文件包含等基础,为编程学习筑牢基础。2、培养严谨态度解题需精准理解规则,如宏展开顺序、指令格式,培养学生严谨对待知识和问题的态度,提升准确性。1、以下叙述中正确的是()。A)用#include包含的头文件的后缀不可以是“.a”B)若一些源程序中包含某个头文件,当该文件有错时,只需对该头文件进行修改,包含此头文件的所有源程序不必重新进行编译。C)宏命令行可以看做是一行C语句D)C编译中的预处理是在编译之前进行的答案:D)2.下面是对宏定义的描述,不正确的是()。A)宏不存在类型问题,宏名无类型,它的参数也无类型B)宏替换不占用运行时间C)宏替换时先求出实参表达式的值,然后代入形参运算求值D)其实,宏替换只不过是字符替代而已答案:C)3.以下程序的输出结果为()。#includestdio.h#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf(“%d\n”,a);}A)6B)10C)8D)9答案:D)1、宏展开(先替换后计算)a=++SQR(k+1);a=++k+1*k+1;2、代入值计算a=4+1*4+1a=94.以下程序的输出结果是()。#defineMIN(x,y)(x)(y)?(x):(y)#includestdio.hmain(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf(“%d\n”,k);}A)15B)100C)10D)1501、宏展开k=10*MIN(i,j);k=10*(i)(j)?(i):(j);2、代入值计算(考虑优先级)k=10*(10)(15)?(10):(15);k=15答案:A)同步练习:1.以下说法中正确的是(c)。A)#define和printf都是C语句B)#define是C语句,而printf不是C)printf是C语句,但#define不是D)#define和printf都不是C语句8.以下正确的描述为(C)。A)每个C语言程序必须在开头使用预处理命令#includestdio.hB)预处理命令必须位于C源程序的首部C)在C语言中预处理命令都以“#”开头D)C语言的预处理命令只能实现宏定义和条件编译的功能11.语句typedeflongclass的作用是(D)。A)建立了一种新的数据类型B)定义了一个整型变量C)定义了一个长整型变量D)定义了一个新的数据类型标识符以下程序输出的结果是_______#defineOK100main(){printf(OK);printf(\n);}OK在printf语句中OK被引号括起来,因此不作宏代换。程序的运行结果为:OK这表示把“OK”当字符串处理。*************第八章经典题解—*—第八章经典题解8.1宏定义第8章编译预处理思政目标1、遵循宏定义规则宏定义需严格遵循格式要求,如符号使用、参数设置等。学生通过学习,养成严谨书写代码习惯,明白细节决定成败,增强规则意识。2、促进团队资源共享文件包含可实现代码复用,类似团队成员共享资源。学生体会到合作优势,培养合作意识,明白团队协作可提高效率、减少重复劳动。8.1宏定义第8章编译预处理作用:对源程序编译之前做一些处理,生成扩展C源程序种类宏定义#define文件包含#include条件编译#if--#else--#endif等格式:“#”开头占单独书写行语句尾不加分号如if(x==YES