C++开发中广泛使用声明和实现分开的开发形式,其编译过程是分离式编译,就是说各个cpp文件完全分开编译,然后生成各自的obj目标文件,最后通过链接器link生成一个可执行的exe文件。不需其他操作。
在编译main.cpp的时候,不需要知道调用的其他文件中的函数的具体实现,只需要有个声明,然后会有一条call的指令,在链接的时候去其他的文件中寻找该函数的具体实现,如果在链接的时候找不到这样一个函数,将会发生一个链接期错误。
下面举例说明:
//func.cpp---包含头文件:声明头文件、标准库
#include “test.h” //作用是让编译器检查声明语句与定义语句是否相同
#include <iostream> //必要,若没有,编译的时候std::cout未声明
void fun()
{
std::cout<<"分离式编译"<<std::endl;
}
//main.cpp---包含头文件:声明头文件、标准库
#include “test.h”
int main()
{
fun();
}
#ifndef TEST_H //test.h
#define TEST_H
int fun();
#endif // !TEST_H