可以用#define命令将一个指定的标识符(即宏名)来代表一个字符串。定义宏的作用一般是用一个短的名字代表一个长的字符串。它的一般形式为
#define 标识符 字符串
这就是已经介绍过的定义符号常量。如
#define PI 3.1415926
还可以用#define命令定义带参数的宏定义。其定义的一般形式为
#define 宏名(参数表) 字符串
如
#define S(a,b) a*b //定义宏S(矩形面积),a、b为宏的参数
使用的形式如下:
area=S(3,2)
用3、2分别代替宏定义中的形式参数a和b,即用3*2代替S(3,2)。因此赋值语句展开为
area=3*2;
由于C++增加了内置函数(inline),比用带参数的宏定义更方便,因此在C++中基本上已不再用#define命令定义宏了,主要用于条件编译中。
4.16.2 “文件包含”处理

1.“文件包含”的作用
所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。C++提供了#include命令用来实现“文件包含”的操作。如在file1.cpp中有以下#include命令:
#include ″file2.cpp″
它的作用见图4.18示意。

“文件包含”命令是很有用的,它可以节省程序设计人员的重复劳动。
#include命令的应用很广泛,绝大多数C++程序中都包括#include命令。现在,库函数的开发者把这些信息写在一个文件中,用户只需将该文件“包含”进来即可(如调用数学函数的,应包含cmath文件),这就大大简化了程序,写一行#include命令的作用相当于写几十行、几百行甚至更多行的内容。这种常用在文件头部的被包含的文件称为“标题文件”或“头部文件”。
头文件一般包含以下几类内容:
(1) 对类型的声明。
(2) 函数声明。
(3) 内置(inline)函数的定义。
(4) 宏定义。用#define定义的符号常量和用const声明的常变量。
(5) 全局变量定义。
(6) 外部变量声明。如entern int a;
(7) 还可以根据需要包含其他头文件。
不同的头文件包括以上不同的信息,提供给程序设计者使用,这样,程序设计者不需自己重复书写这些信息,只需用一行#include命令就把这些信息包含到本文件了,大大地提高了编程效率。由于有了#include命令,就把不同的文件组合在一起,形成一个文件。因此说,头文件是源文件之间的接口。
评论