- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
keil预处理命令及方法
第14章 预处理及用户配置文件 预处理命令通常在程序编译时进行一些符号处理,其并不执行具体的硬件操作。C51语言中的预处理命令主要有宏定义指令、文件包含指令和条件编译指令,还有其他一些调试时使用的指令。本章将详细介绍各种预处理命令以及C51的用户配置文件,并结合一定的程序实例以加深理解。本章包括: 宏定义指令 文件包含指令 条件编译指令 C51编译器的控制指令 C51的用户配置文件 14.1 预处理命令概述 C51语言中提供了各种预处理命令,类似于汇编程序中的伪指令。一般来说,在对源程序进行编译前,C51编译器需要先对程序中的预处理命令进行处理,然后将预处理的结果与源程序一并进行编译,最后产生目标代码。通过这些预处理命令,在很大程度上为C51提供功能和符号等方面的扩展,使用预处理命令也可以提高程序的可读性。 为了与源程序中的语句相区别,预处理命令前要加一个“#”。C51程序中的预处理命令包括以下几个: #define //用于宏定义 #error //用于程序调试 #include //用于文件包含 #if //用于条件编译 #else //用于条件编译 #elif //用于多种条件编译选择 #endif //用于条件编译 #ifdef //用于条件编译 #ifndef //用于条件编译 #undef //用于宏定义 #line //用于更改行号 #pragma //用于传送控制指令 14.2 宏定义指令 宏定义指令是用一些标识符作为宏名来代替一些符号或者常量的命令。宏定义指令可以带参数,也可以不带参数。下面分别介绍用于宏定义的一些预处理指令。 14.2.1 #define命令 #define命令用于定义一个“宏名”。其中“宏名”是一个标识符,在源程序中遇到该标识符时,均以定义的串的内容替代该标识符。ANSI标准将标识符定义为“宏名”,这个替换过程称为“宏替换”。#define命令用于定义宏名时,可以带参数,也可以不带参数,下面分别介绍这两种情况。 1.不带参数的宏定义 不带参数的宏定义,其一般形式如下: #define 标识符 字符串 其中,#define是宏定义指令,标识符即宏名,字符串是被替换的对象。典型的宏定义指令示例如下: #define TURE 1 #define FALSE 0 #define PI 3.1415926 2.带参数的宏定义 带参数的宏定义指令,其一般形式如下: #define 宏名(参数表) 字符串 14.2.2 #undef命令 #undef命令用于取消前面已定义过的宏名。一般形式为: #undef 宏名 其中,宏名为前面用#define定义过的标识符。使用#undef的目的是将宏名局限在仅需要的代码段中。示例如下: #include stdio.h //头文件 #define COUNT 25 //宏定义 void main() //主函数 { printf(COUNT =%d\n, COUNT); //输出COUNT =10 #undef COUNT //撤销宏定义 //printf(COUNT =%d\n, COUNT); //此时再引用是错误的 } 14.3 文件包含指令 文件包含指令#include通常在C51程序的开头,将另外一文件的内容引入当前文件。其中被包含的文件通常是头文件、宏定义等,利用文件包含指令可以有助于更好地调试文件。其一般形式如下: #include 头文件.h #include 头文件.h #include 宏定义标识符 14.4 条件编译指令 条件编译指令用于对程序源代码的各部分有选择地进行编译。采用条件汇编,可以提高程序的适用性,缩小目标代码的大小。 在默认情况下,源程序中的所有行都要进行编译。但是有时需要某些语句行在条件满足的情况下,才进行编译,此时便用到条件编译指令。目前商业软件公司广泛应用条件编译来制作某个程序的许多不同用户版本。 14.4.1 #if、#else、#endif命令 #if、#else、#endif指令用于条件编译的一般形式如下: #if 常数表达式 语句段; #else 语句段; #endif 其中,#if、#else、#endif为条件编译指令,常数表达式为判断的条件,语句段为条件编译部分。执行过程为,如果常量表达式为真,则编译其后面的语句段;如果常量表达式为假,则编译#else后面的语句段;#endif命令是一个条件编译的结束。 14.4.2 #elif
文档评论(0)