任务描述
预处理程序提供了条件编译的功能。可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对程序的移植和调试是很有用的。
知识学习
(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语言源程序中的每一行代码都要参加编译,但有时候出于对程序代码优化的考虑,希望只对其中一部分内容进行编译,此时就需要在程序中加上条件,让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就是条件编译。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。