一个工程(project)包含一个以上文件(主要是源文件),称为多文件工程。下面以Visual Studio IDE为例,说明如何建立、编译、连接。
一、在工程中添加多个文件
在Project菜单下,点击Add New Item:
在弹出的对话框中输入源文件名称:
当然,也可以选择添加已写好的文件,这样可以重复使用以前的代码。
二、多文件工程的编译和连接
看下面的工程,包含两个文件,一个是main.cpp, 还有一个是添加到工程的文件:
#include <iostream>
using namespace std;
//function forward declaration.
int add(int, int); //parameter name is not necessary.
int main()
{
int a = 6;
int b = 9;
cout << add(a, b);
return 0;
}
编译的问题:
在这个文件中,main()函数调用了一个函数add(), 但是add()定义并不在这个文件中。为了通过编译,需要在这个文件中添加add()的前置声明(forward declaration). 在前置声明中,形参的变量名可以省略,但是类型必须写明。
连接的问题:
如果这个工程只包含上述一个文件,编译通过没问题,但是在连接阶段会出问题,调用函数时找不到函数的出处(即definition). 因此,需要将下列代码,以文件的形式,加入到工程(projenct)中.
int add(int a, int b)
{
return a + b;
}
在资源管理器下面,可以看到工程中所有的文件名,下面是本工程中的两个文件:
这个时候,再按正常的流程,进行Build(编译、连接、生成exe文件)。编译的时候,编译器对各个源文件进行编译,不分现后,也不管哪个函数地定义在另外哪个文件。到了连接阶段,连接器去相关文件中找函数add()的定义,然后进行连接。