C语言进修教程第九章-预处理惩罚(3)
文件包括
文件包括是C预处理惩罚措施的另一个重要成果。文件包括呼吁行的一般形式为: #include"文件名" 在前面我们已多次用此呼吁包括过库函数的头文件。譬喻:
#include"stdio.h"
#include"math.h"
文件包括呼吁的成果是把指定的文件插入该呼吁行位置代替该呼吁行, 从而把指定的文件和当前的源措施文件连成一个源文件。在措施设计中,文件包括是很有用的。 一个大的措施可以分为多个模块,由多个措施员别离编程。 有些公用的标记常量或宏界说等可单独构成一个文件, 在其它文件的开头用包括呼吁包括该文件即可利用。这样,可制止在每个文件开头都去书写那些公用量, 从而节减时间,并淘汰堕落。
对文件包括呼吁还要说明以下几点:
1. 包括呼吁中的文件名可以用双引号括起来,也可以用尖括号括起来。譬喻以下写法都是答允的: #include"stdio.h" #include<math.h> 可是这两种形式是有区此外:利用尖括号暗示在包括文件目次中去查找(包括目次是由用户在配置情况时配置的), 而不在源文件目次去查找; 利用双引号则暗示首先在当前的源文件目次中查找,若未找到才到包括目次中去查找。 用户编程时可按照本身文件地址的目次来选择某一种呼吁形式。
2. 一个include呼吁只能指定一个被包括文件, 若有多个文件要包括,则需用多个include呼吁。3. 文件包括答允嵌套,即在一个被包括的文件中又可以包括另一个文件。
条件编译
预处理惩罚措施提供了条件编译的成果。 可以按差异的条件去编译差异的措施部门,因而发生差异的方针代码文件。 这对付措施的移植和调试是很有用的。 条件编译有三种形式,下面别离先容:
1. 第一种形式:
#ifdef 标识符
措施段1
#else
措施段2
#endif
它的成果是,假如标识符已被 #define呼吁界说过则对措施段1举办编译;不然对措施段2举办编译。假如没有措施段2(它为空),本名目中的#else可以没有, 即可以写为:
#ifdef 标识符
措施段 #endif
#define NUM ok
main(){
struct stu
{
int num;
char *name;
char sex;
float score;
} *ps;
ps=(struct stu*)malloc(sizeof(struct stu));
ps->num=102;
ps->name="Zhang ping";
ps->sex=’M’;
ps->score=62.5;
#ifdef NUM
printf("Number=%d\nScore=%f\n",ps->num,ps->score);
#else
printf("Name=%s\nSex=%c\n",ps->name,ps->sex);
#endif
free(ps);
}
由于在措施的第16行插入了条件编译预处理惩罚呼吁, 因此要按照NUM是否被界说过来抉择编译那一个printf语句。而在措施的第一行已对NUM作过宏界说,因此应对第一个printf语句作编译故运行功效是输出了学号和后果。在措施的第一行宏界说中,界说NUM暗示字符串OK,其实也可觉得任何字符串,甚至不给出任何字符串,写为: #define NUM 也具有同样的意义。 只有打消措施的第一行才会去编译第二个printf语句。读者可上机试作。