每个C++程序都由一个或多个文件组成。根据约定,用于存储源代码的文件有两类:头文件和源文件。头文件可以包含描述程序所需的数据类型的代码,以及其他类型的声明。这些文件之所以称为头文件,是因为通常在其他源文件的开头包含它们。头文件通常用文件扩展名.h来区分,但这不是强制的,在一些系统中,也使用其他扩展名来标识头文件,例如.hxx。
源文件的扩展名是.cpp,它包含了函数声明,即程序的可执行代码。这些代码通常引用在自己的头文件中定义的数据类型的声明或定义。编译器在编译代码时,需要知道这些声明或定义,因此应在文件的开头通过#include指令指定.cpp文件中需要的.h文件。#include指令是编译器的一个指令,它可以把指定头文件的内容插入代码。还需要为代码需要的标准库头文件添加#include指令。
图1-3说明,程序中的源代码包含在两个.cpp文件和三个头文件中。第一个.cpp文件使用前两个头文件中的信息,第二个.cpp文件需要后两个头文件中的内容。第10章将介绍#include指令的更多内容。

图1-3 C++程序的源文件
编译器提供了大量的标准头文件,其中包含使用标准库功能所需要的声明。例如,这些头文件包含可用标准库函数的声明。图1-3中的第一个.cpp文件包含<iostream>头文件,在前面的C++示例程序中就使用过这个头文件。在本例中,C++的头文件名都没有扩展名。实际上,C++的标准头文件名都没有扩展名,这就把它们与其他头文件区分开来。
提示:
附录C中有ANSI/ISO标准库头文件的详细信息。
编译器系统还有其他许多头文件,为使用操作系统函数提供了所需要的定义,并减少了编程量。这里的例子只使用了几个头文件,但在大多数实际的C++应用程序中,要使用非常多的头文件。
程序的函数和执行
如前所述,C++程序至少包含一个函数main(),但程序一般还包含许多其他函数,一些是我们自己编写的,另外一些是标准库函数。程序的函数存储在许多源文件中,其文件的扩展名通常是.cpp,其他扩展名.cxx和.cc也较常见。
图1-4显示了程序的执行顺序,该程序包含几个函数。main()函数在被操作系统调用时开始执行,程序中的其他函数由main()或其他函数调用。执行一个函数就称为调用函数。在调用函数时,可以给它传送数据项。要传送给函数的数据项放在调用操作中函数名后面的括号中。在函数执行完后,执行控制就返回到调用函数的地方。

图1-4 程序函数的执行方式
函数在执行完毕时,还可以把一个值返回到调用的位置上。返回的值可以存储起来,以备以后使用,也可以参与某种类型的计算,例如算术表达式的计算。第8章将学习如何创建自己的函数,下一章将使用标准库中的函数。





