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语句。读者可上机试作。




版权声明: 原创作品,答应转载,转载时请务必以超链接体式格局标明文章 原始起因 、作者信息和本声明。不然将清查纪律责任。

posted @ 2011-03-07 18:41  蓝色的天空III  阅读(168)  评论(0编辑  收藏  举报