字体
第(1/5)页
关灯
   存书签 书架管理 返回目录
    i 再自增 1 变为 5。进入第三次循环,由于 i 值已为 5,所以这

    将是最后一次循环。计算表达式的值为 5*6 等于 30。i 值再自增 1 变为 6,不再满足循环条

    件,停止循环。

    从以上分析可以看出函数调用和宏调用二者在形式上相似,在本质上是完全不同的。

    6. 宏定义也可用来定义多个语句,在宏调用时,把这些语句又代换到源程序内。看下

    面的例子。

    【例 9.11】

    #define SSSV(s1,s2,s3,v) s1=l*w;s2=l*h;s3=w*h;v=w*l*h;

    main(){

    int l=3,w=4,h=5,sa,sb,sc,vv;

    SSSV(sa,sb,sc,vv);

    printf("sa=%d\nsb=%d\nsc=%d\nvv=%d\n",sa,sb,sc,vv);

    }

    程序第一行为宏定义,用宏名 SSSV 表示 4 个赋值语句,4 个形参分别为 4 个赋值符左部

    的变量。在宏调用时,把 4 个语句展开并用实参代替形参。使计算结果送入实参之中。

    9.3 文件包含

    文件包含是 C 预处理程序的另一个重要功能。

    文件包含命令行的一般形式为:

    #include"文件名"

    在前面我们已多次用此命令包含过库函数的头文件。例如:

    #include"stdio.h"

    #include"math.h"

    文件包含命令的功能是把指定的文件chā入该命令行位置取代该命令行,从而把指定的文件和

    当前的源程序文件连成一个源文件。

    在程序设计中,文件包含是很有用的。一个大的程序可以分为多个模块,由多个程序员

    分别编程。有些公用的符号常量或宏定义等可单独组成一个文件,在其它文件的开头用包含

    命令包含该文件即可使用。这样,可避免在每个文件开头都去书写那些公用量,从而节省时

    间,并减少出错。

    对文件包含命令还要说明以下几点:

    1. 包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来。例如以下写法

    都是允许的:

    #include"stdio.h"

    #include

    但是这两种形式是有区别的:使用尖括号表示在包含文件目录中去查找(包含目录是

    由用户在设置环境时设置的),而不在源文件目录去查找;

    使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查

    找。用户编程时可根据自己文件所在的目录来选择某一种命令形式。

    2. 一个 include 命令只能指定一个被包含文件,若有多个文件要包含,则需用多个

    include 命令。

    3. 文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。

    9.4 条件编译

    预处理程序提供了条件编译的功能。可以按不同的条件去编译不同的程序部分,因而产

    生不同的目标代码文件。这对于程序的移植和调试是很有用的。

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

    1. 第一种形式:

   
上一章 目录 下一页