keil预处理命令及方法.ppt
《keil预处理命令及方法.ppt》由会员分享,可在线阅读,更多相关《keil预处理命令及方法.ppt(25页珍藏版)》请在三一办公上搜索。
1、第14章 预处理及用户配置文件,预处理命令通常在程序编译时进行一些符号处理,其并不执行具体的硬件操作。C51语言中的预处理命令主要有宏定义指令、文件包含指令和条件编译指令,还有其他一些调试时使用的指令。本章将详细介绍各种预处理命令以及C51的用户配置文件,并结合一定的程序实例以加深理解。本章包括:宏定义指令文件包含指令条件编译指令C51编译器的控制指令C51的用户配置文件,14.1 预处理命令概述,C51语言中提供了各种预处理命令,类似于汇编程序中的伪指令。一般来说,在对源程序进行编译前,C51编译器需要先对程序中的预处理命令进行处理,然后将预处理的结果与源程序一并进行编译,最后产生目标代码。
2、通过这些预处理命令,在很大程度上为C51提供功能和符号等方面的扩展,使用预处理命令也可以提高程序的可读性。为了与源程序中的语句相区别,预处理命令前要加一个“#”。C51程序中的预处理命令包括以下几个:#define/用于宏定义#error/用于程序调试#include/用于文件包含#if/用于条件编译#else/用于条件编译#elif/用于多种条件编译选择#endif/用于条件编译#ifdef/用于条件编译#ifndef/用于条件编译#undef/用于宏定义#line/用于更改行号#pragma/用于传送控制指令,14.2 宏定义指令,宏定义指令是用一些标识符作为宏名来代替一些符号或者常量的命
3、令。宏定义指令可以带参数,也可以不带参数。下面分别介绍用于宏定义的一些预处理指令。,14.2.1#define命令,#define命令用于定义一个“宏名”。其中“宏名”是一个标识符,在源程序中遇到该标识符时,均以定义的串的内容替代该标识符。ANSI标准将标识符定义为“宏名”,这个替换过程称为“宏替换”。#define命令用于定义宏名时,可以带参数,也可以不带参数,下面分别介绍这两种情况。1不带参数的宏定义不带参数的宏定义,其一般形式如下:#define 标识符 字符串其中,#define是宏定义指令,标识符即宏名,字符串是被替换的对象。典型的宏定义指令示例如下:#define TURE 1#d
4、efine FALSE0#define PI 3.14159262带参数的宏定义带参数的宏定义指令,其一般形式如下:#define 宏名(参数表)字符串,14.2.2#undef命令,#undef命令用于取消前面已定义过的宏名。一般形式为:#undef 宏名其中,宏名为前面用#define定义过的标识符。使用#undef的目的是将宏名局限在仅需要的代码段中。示例如下:#include/头文件#define COUNT 25/宏定义void main()/主函数printf(COUNT=%dn,COUNT);/输出COUNT=10#undef COUNT/撤销宏定义/printf(COUNT=%
5、dn,COUNT);/此时再引用是错误的,14.3 文件包含指令,文件包含指令#include通常在C51程序的开头,将另外一文件的内容引入当前文件。其中被包含的文件通常是头文件、宏定义等,利用文件包含指令可以有助于更好地调试文件。其一般形式如下:#include 头文件.h#include#include 宏定义标识符,14.4 条件编译指令,条件编译指令用于对程序源代码的各部分有选择地进行编译。采用条件汇编,可以提高程序的适用性,缩小目标代码的大小。在默认情况下,源程序中的所有行都要进行编译。但是有时需要某些语句行在条件满足的情况下,才进行编译,此时便用到条件编译指令。目前商业软件公司广泛
6、应用条件编译来制作某个程序的许多不同用户版本。,14.4.1#if、#else、#endif命令,#if、#else、#endif指令用于条件编译的一般形式如下:#if 常数表达式语句段;#else语句段;#endif其中,#if、#else、#endif为条件编译指令,常数表达式为判断的条件,语句段为条件编译部分。执行过程为,如果常量表达式为真,则编译其后面的语句段;如果常量表达式为假,则编译#else后面的语句段;#endif命令是一个条件编译的结束。,14.4.2#elif命令,#elif命令用于进行多种编译选择。其意义与“else if”相同,形成一个if-else-if阶梯状语句。此
7、时条件编译的一般形式如下:#if 表达式0语句段;#elif 表达式1语句段;#elif 表达式2语句段;#elif 表达式3语句段;#elif 表达式n语句段;#endif,14.4.3#ifdef、#ifndef命令,#ifdef与#ifndef命令用于判断宏名是否被定义,并根据判断的情况进行条件编译。#ifdef命令的一般形式是:#ifdef 宏名语句段;#endif其执行过程是,如果宏名在前面#define语句中已定义过,则后面的语句段将被编译。#ifndef的一般形式是:#ifndef宏名语句段;#endif,14.5 其他编译指令,除了以上几种预处理指令外,在C51语言中还定义了其
8、他几种编译预处理指令,主要用于编译和调试程序等。下面分别进行讲解。,14.5.1#line命令,#line命令用于改变_LINE_与_FILE_的内容。其中_LINE_和_FILE_是在编译程序中预先定义的标识符,分别表示行号和源文件。#line命令使用的一般形式如下:#line 数字文件名其中的数字为任意正整数,可选的文件名为任意有效文件标识符。行号为源程序中当前行号,文件名为源文件的名字。命令#line主要用于调试及其他特殊应用。,14.5.2#error,#error命令用于强迫编译程序停止编译,主要用于程序调试。其使用的一般形式如下:#error“message”其中,message为
9、错误消息。这里举例讲解#error命令在程序设计中的应用,示例如下:#include/头文件#define SCORE 85/宏定义void main()/主函数#ifdef SCORE/条件编译printf(SCORE existed!n);/如果宏SCORE存在,则执行该语句#else#error No SCORE!n/如果宏SCORE不存在,则执行该处#endif#ifndef GREED#error GREED is not defined!n/如果宏GREED存在,则执行该处#elseprintf(GREED is defined!n);/如果宏GREED不存在,则执行该语句#end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- keil 预处理 命令 方法
链接地址:https://www.31ppt.com/p-6510523.html