




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
【好程序员学习笔记】C语言编译预处理命令 第一篇:【好程序员学习笔记】C语言编译预处理命令文件包含:把指定的文件插入到预处理命令行所在的位置并取代该命令行,即把指定的文件和当前的源程序文件连接成一个源文件。#include在文件包含目录中去查找指定的文件,并将该文件添加到源文件中。一个被包含的文件中可以含有文件包含命令来包含另一个文件。#include“文件名”命令中文件名的位置是当前源文件的位置,若在当前目录中未找到该文件,则再到“包含目录”中去查找。宏用一个标识符表示一个字符串,称为宏,被定义为宏的标识符称为宏名。在编译预处理时对程序中所有出现的宏名用宏定义中的字符串去代换,这就是宏替换。它是由系统编译程序时自动完成的。无参宏定义#define标识符字符串如#definePI3.14使用宏时要注意:(1)宏定义是用宏名来表示一个字符串,在宏展开时用字符串取代宏名。2)宏定义不是变量定义或语句,在行末不能加分号,如果加上分号则分号也成为字符串的一部分。(3)宏定义可以出现在程序的任何地方,其作用域是宏定义命令所在位置开始到源程序结束。如果要终止其作用域可使用#undef命令。(4)宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时将逐层替换。(5)#definePI3.1415926#defineAREAPI*y*y有参宏定义#define宏名(形参表)字符串对带参数的宏,在调用中不仅要进行宏展开,而且还要用实参去替换形参。带参宏调用的语法格式如下:宏名(实参表);#defineM(x)x+1K=M(3);K=3+1定义有参宏时要注意以下几点:(1)有参宏定义中,宏名和形参表之间不能有空格出现。(2)在函数中,调用时要把实参的值赋给形参,进行“值传递”。而在带参宏调用中,只是符号替换,不存在值传递问题。(3)宏定义中的形参只能是标识符,而宏调用中的实参可以是表达式。字符串内的形参通常用括号括起来以避免出错。在使用宏时不仅要将形式参数用括号括起来,还应将其整体用括号括起来。#defineS(y)((y)*(y))条件编译条件编译可以按不同的条件去编译不同的程序段。1#ifdef#ifdef标识符程序段1#else程序段2#endif功能:如果标识符已被#define定义过,则对程序段1进行编译,否则对程序段2进行编译。格式中的#else部分可以没有,即:#ifdef标识符程序段#endif2、#ifndef语法格式如下:#ifndef标识符程序段1#else程序段2#endif功能与ifdef形式的功能正好相反。3、#if常量表达式#if常量表达式程序段1#else程序段2#endif功能:如果常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段2进行编译,因此可以使程序在不同条件下,完成不同的功能。上面介绍的条件编译实现的逻辑也可以用条件语句来实现,但是用条件语句将会对整个源程序进行编译,生成的目标代码程序较长,运行时间也较长,采用条件编译则根据条件只编译其中的程序段1或程序段2,生成的目标程序较短。第二篇:C语言程序设计教案第九章编译预处理第九章编译预处理课题:教学目的:教学重点:教学难点:第九章编译预处理1、了解预处理的概念及特点2、掌握有参宏与无参宏的定义及使用,领会文件包含的使用及效果掌握宏的使用,文件包含有参宏与无参宏的使用步骤一复习引导ANSIC标准规定可以在C源程序中加入一些“预处理命令”,以改进程序设计环境,提高编程效率。这些预处理命令是由ANSIC统一规定的,但它不是C语言本身的组成部分,不能直接对它们进行编译。必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行“预处理”,即根据预处理命令对程序作相应的处理。经过预处理后程序不再包括预处理命令了,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。步骤二讲授新课C语言与其他高级语言的一个重要区别是可以使用预处理命令和具有预处理的功能。C提供的预处理功能主要有以下三种:宏定义、文件包含、条件编译。分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语句相区别,这些命令以符号“#”开头。§9.1宏定义宏:代表一个字符串的标识符。宏名:被定义为“宏”的标识符。宏代换(展开):在编译预处理时,对程序中所有出现的“宏名”,用宏定义中的字符串去代换的过程。一、不带参数的宏定义一般形式:#define标识符字符串#definePI3.1415926main(){floatl,s,r,v;printf(“inputradius:”);scanf(“%f”,&r);l=2.0*PI*r;s=PI*r*r;v=3.0/4*PI*r*r*r;printf(“%10.4f,%10.4f,%10.4n”,l

淑然****by
实名认证
内容提供者


最近下载