首页 理论教育 C语言程序设计基础教程:理解条件编译

C语言程序设计基础教程:理解条件编译

时间:2023-10-27 理论教育 版权反馈
【摘要】:任务描述预处理程序提供了条件编译的功能。条件编译实例操作例6.5根据条件编译读取学生的相应信息。程序说明:由于在程序的第21 行插入了条件编译预处理命令,因此要根据NUM 是否被定义过来决定编译那一个printf 语句。在程序的宏定义中,定义NUM 表示字符串OK,其实也可以为任何字符串,甚至不给出任何字符串,写为:#define NUM图6.5例6.5 程序运行结果也具有同样的意义。

C语言程序设计基础教程:理解条件编译

任务描述

预处理程序提供了条件编译的功能。可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对程序的移植和调试是很有用的。

知识学习

(1)条件编译

条件编译有3 种形式,下面分别介绍:

①第一种形式:

它的功能是,如果标识符已被#define 命令定义过则对程序段1 进行编译;否则对程序段2 进行编译。如果没有程序段2(它为空),本格式中的#else 可以没有,即可以写为:

②第二种形式:

与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能是,如果标识符未被#define 命令定义过则对程序段1 进行编译,否则对程序段2 进行编译。这与第一种形式的功能正相反。

③第三种形式:

它的功能是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2 进行编译。因此可以使程序在不同条件下,完成不同的功能。(www.xing528.com)

(2)条件编译实例操作

例6.5 根据条件编译读取学生的相应信息。

程序说明:

由于在程序的第21 行插入了条件编译预处理命令,因此要根据NUM 是否被定义过来决定编译那一个printf 语句。而在程序的第一行已对NUM 作过宏定义,因此应对第一个printf语句作编译故运行结果是输出了学号和成绩。

在程序的宏定义中,定义NUM 表示字符串OK,其实也可以为任何字符串,甚至不给出任何字符串,写为:

#define NUM

图6.5 例6.5 程序运行结果

也具有同样的意义。只有取消程序的第一行才会去编译第二个printf 语句。

任务总结

—般情况下,C语言源程序中的每一行代码都要参加编译,但有时候出于对程序代码优化的考虑,希望只对其中一部分内容进行编译,此时就需要在程序中加上条件,让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就是条件编译。

条件编译允许只编译程序中满足条件的程序段,使生成的目标程序较短,从而减少了内存的占用并提高了程序的效率

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

我要反馈