了解分离式编译,首先要明白一个程序的执行过程
Step 1.预处理
将.cpp源文件,一开始只是一个文本文件,通过预处理器,读取文件中的.h文件,形成一个 .i 的文本文件。
Step 2.编译器
将 .i 的文本文件通过编译器,编译为汇编程序.s。
Step 3.汇编器
执行.s汇编程序,形成包含对象代码的.obj对象文件。
Step 4.链接器
再通过链接器,把.obj对象文件和一些库文件链接起来,生成 .exe 可执行文件。
总体来说就是:高级语言(.cpp文件) 到 汇编语言(.s文件) 到 机器语言(.o文件) 的过程。
分离式编译
分离式编译:把一个大的程序分割到几个文件里,每个文件独立编译,再把各个文件链接起来。
test.h
#include<iostream>
void test();
test.cpp
#include"test.h"
void test()
{
std::cout << "这是一个测试" << std::endl;
}
testmain.cpp
#include<iostream>
#include"test.h"
int main()
{
test(); // 分离式编译
}
test.h里申明一个函数,test.cpp里定义这个函数,testmain.cpp里调用这个函数。
这个将申明、定义、调用分开的编译,就是分离式编译。
分离式编译的过程:首先会将每个.cpp文件进行独立编译,过程如同上述所说的一样,不同的是,编译器会在链接阶段,把每个文件的.obj对象文件和库文件链接在一起,形成一个可执行文件。