首页 理论教育编译预处理的作用及语句分类

编译预处理的作用及语句分类

【摘要】:它的作用不是执行程序的功能,而是让编译系统了解,在对源程序进行编译前,进行处理。这种语句称为编译预处理语句,类似于汇编语言中的伪指令。为了与执行语句区别,编译预处理语句以#号开头,语句结束不用分号。图4-4P1口状态编译预处理语句有三种:文件包含、宏定义和条件编译。文件包含的功能是在编译源程序前,用包含文件的内容取代预处理语句。

在C语言程序中,除了要完成程序功能所必需的声明性语句和执行性语句外,还有另一类语句。它的作用不是执行程序的功能,而是让编译系统了解,在对源程序进行编译前,进行处理。这种语句称为编译预处理语句,类似于汇编语言中的伪指令。为了与执行语句区别,编译预处理语句以#号开头,语句结束不用分号。

978-7-111-47138-7-Chapter04-5.jpg

图4-4 P1口状态

编译预处理语句有三种:文件包含、宏定义和条件编译。

1.文件包含

例4-1程序的第1条#include<reg51.h>就是文件包含预处理语句。“< >”内包含的是头文件名。这个文件必须放在程序的开头部分。由于有了文件包含及众多可以调用的头文件,C语言程序才可以做到精炼、简洁。

文件包含的功能是在编译源程序前,用包含文件的内容取代预处理语句。即从存储器中读取包含的文件,然后将它写入预处理语句的位置,作为程序的一部分。

当用“< >”注明包含文件时,其意义是通知编译系统要按标准路径搜索包含文件,也可以用双引号注明包含文件,其意义是通知编译系统先在被包含源文件的路径中搜索包含文件,若找不到,则按系统标准路径搜索包含文件。一般情况下,已经知道包含文件不在当前路径内,可以用“< >”注明。文件包含及头文件的使用,可以避免重复性劳动,提高编程效率,这也是C语言编程的一个重要特点。(www.chuimin.cn)

2.宏定义

978-7-111-47138-7-Chapter04-6.jpg

宏定义就是用标识符代替字符串

例如,#define uchar unsigned char 就是一个宏定义语句。它以uchar代替较麻烦的unsigned char。这样做,输入时要简单得多。再如

978-7-111-47138-7-Chapter04-7.jpg

用STD代替0,用DSD代替1。

3.条件编译(请参考其他书籍)