欢迎来到天天文库
浏览记录
ID:50351494
大小:147.50 KB
页数:22页
时间:2020-03-08
《C语言程序设计 第11章 编译预处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章编译预处理主要内容宏定义文件包含条件编译程序案例小结习题第页11-1宏定义不带参数的宏定义带参数的宏定义终止宏定义第页11-1-1不带参数的宏定义不带参数的宏定义是用一个简单得名字代替一个长的字符串,语句的一般格式为:#define符号常量名字符串其中,符号常量名称为“宏名”,这种宏定义的作用是:在该宏定义之后的源程序中、在程序结束或取消宏定义之前,除了注释和字符串常量之外的所有出现被定义的符号常量的地方,均用宏定义的字符串来代替。宏名一般用大写字母来表示,以便与变量名相区别。但这并非规定,实际上也可用小写字母。第页11-1-2带参数的宏定义宏定义不仅只能进行简单的字符串替换,还能
2、进行参数替换。其一般形式为:#define宏名(参数表)字符串其中,“字符串”包含有括号中指定的参数。第页11-1-3终止宏定义宏命令#undef用于终止宏定义的作用域,一般形式为:#undef宏名第页11-2文件包含所谓“文件包含”处理是指将一个源文件的全部内容包含进来,成为当前文件的一部分。文件包含预处理命令的一般形式为:#include<文件名>或#include"文件名"第页标准头文件第页11-3条件编译#if、#else、#endif的运用带有#elif的条件编译#ifdef的运用#ifndef的运用第页#if、#else、#endif的运用定义的一般形式为:#if表达式1程序段
3、1#else表达式2程序段2#endif它的作用是当指定的表达式为真(非零)时编译程序段1,否则编译程序段2。可以事先给定一定条件,使程序在不同的条件下执行不同的功能。第页带有#elif的条件编译定义的一般形式为:#if表达式1程序段1#elif表达式2程序段2#elif表达式3程序段3…#else程序段n#endif第页接上这里的#elif的含义是“elseif”,该命令的功能是如果表达式1的值为真,则编译程序段1;否则,如果表达式2的值为真,编译程序段2;如果所有表达式的值为假,则编译程序段n。也可以没有#else部分,如所有表达式的值为假,则此命令中没有程序段被编译。第页#ifdef
4、的运用定义的一般形式为:#ifdef标识符程序段1#else程序段2#endif第页接上它的作用是当所指定的标识符已经被#define命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。其中#else部分可以没有,即:#ifdef标识符程序段1#endif其中,“程序段”指语句组或命令行。第页#ifndef的运用定义的一般形式为:#ifndef标识符程序段1#else程序段2#endif它的作用是若标识符未被定义,则编译程序段1,否则编译程序段2。第页11-4程序案例【例】输入一个口令,根据需要设置条件编译,使之在调试程序时,按原码输出;在使用时输出“*”号。#include
5、tdio.h>#defineDEBUGvoidmain(){charpass[80];inti=1;printf("Pleaseinputpassword:");do{i++;第页接上pass[i]=getchar();#ifdefDEBUGputchar(pass[i]);#elseputchar('*');#endif}while(pass[i]!='');}第页11-5小结C语言的宏定义可以分为两种形式:一种是带参数的宏定义;另一种是不带参数的宏定义。无参宏是用一个简单的名字代替一个长的字符串。除了简单的宏定义以外,C预处理程序还允许定义带参数的宏。进行预处理时,不仅对定义的宏名
6、进行宏替换,而且进行参数替换。其中,字符串中应该包含在参数表中所指定的参数。所谓文件包含预处理,是指在一个文件中将另外一个文件的全部内容包含进来的处理过程,即将另外的文件包含到本文件中。C语言中,编译预处理命令#include实现包含操作,文件包含命令的功能是,在对源程序进行编译之前,用包含文件的内容取代该文件包含预处理语句。第页一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只有在满足一定条件下才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。条件编译的几种形式如下第页#if、#else、#endif的运用定义的一般形式为:#if表达式1程序段1#el
7、se表达式2程序段2#endif其功能是当表达式的值为真(非零)时,则编译程序段1,否则编译程序段2。第页#ifdef的运用定义的一般形式为:#ifdef标识符程序段1#else程序段2#endif其功能是当所指定的标识符已经被#define命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。第页#ifndef的运用定义的一般形式为:#ifndef标识符程序段1#else程序段2#endif其功能是若标识符未被
此文档下载收益归作者所有