首页 理论教育 C语言程序设计-条件编译的3种形式

C语言程序设计-条件编译的3种形式

时间:2023-11-17 理论教育 版权反馈
【摘要】:以上这些情况就需要指定编译的条件,统称为“条件编译”。条件编译主要有以下3 种形式:1.形式一其功能为如果标识符已经被定义过,则编译程序段1,否则,编译程序段2。else 语句,因为编译时要对所有的语句都编译,所以生成的目标程序较长,导致程序运行时间较长;而如果采用条件编译,则要编译的语句较少,生成的目标程序较短,程序运行时间缩短。尤其是对于一些比较长的选择程序段,采用条件编译就很有必要了。

C语言程序设计-条件编译的3种形式

在C 语言编译系统中,如果不做特别说明,基本上源程序中所有的语句都参加编译。不过,有的时候由于程序设计需要,可能只希望源程序中的一部分程序进行编译,而另外一部分不参与编译。或者,希望当满足一定条件时,一部分程序段进行编译,而条件不满足时,则编译例外一部分程序段。以上这些情况就需要指定编译的条件,统称为“条件编译”。

条件编译主要有以下3 种形式:

1.形式一

其功能为如果标识符已经被定义过(用#define 定义),则编译程序段1,否则,编译程序段2。上例中#else 部分也可以省略。

例如:

在本例中,将会编译printf("信息已经存在!\n");。如果删除#define ARR,则将会编译printf("请创建新信息!\n");这条语句。

2.形式二

与形式一类似,功能为如果标识符未定义,则对程序段1 进行编译;否则,对程序段2进行编译。(www.xing528.com)

3.形式三

它的功能是:当表达式的值为真时,编译程序段1;否则,编译程序段2。这个功能和if…else语句类似,但是却有很大的不同。如果使用if…else 语句,因为编译时要对所有的语句都编译,所以生成的目标程序较长,导致程序运行时间较长;而如果采用条件编译,则要编译的语句较少,生成的目标程序较短,程序运行时间缩短。尤其是对于一些比较长的选择程序段,采用条件编译就很有必要了。

任务实施

1.程序源代码

2.程序说明

reg52.h 是定义51 单片机特殊功能寄存器和位寄存器的头文件。由于库函数_crol_()在头文件intrins.h 中,所以在程序开头处要使用预处理命令#include<intrins.h>。然后程序中用两个宏定义,分别用unit 和uchar 替换掉较复杂的标识符unsigned int 和unsigned char。delay(300)这条函数调用语句实现延时300 ms。这里重点解释a = _crol_(a,1);这条语句。该语句的作用是将a 变量的值循环左移1 位后再赋给a 变量。a 的值原本是0xfe,二进制数为11111110,此时P1 的值为11111110,点亮第一个发光管。执行该函数后,a 的值为11111101,然后P1 = a,此时P1 的值为11111101,点亮第二个发光管。依此类推,该程序可实现发光二极管的逐一点亮,并且每个管亮的时间间隔是300 ms。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈