在编译过程中,程序代码往往被拆成很多部分,每部分放在一个独立的原文件中,而不是将所有的代码放在一个文件中。考虑一个简单的小例子:程序中有两个函数:main()和foo()。main()函数位于main.cpp,foo()函数位于foo.cp,main()函数中调用foo()函数。在编译阶段,由于编译是对单个文件进行编译,所以编译main.cpp时,编译器不知道是否存在foo()函数以及foo()函数调用是否正确,因此需要头文件辅助。也就是说,在编译命令:
cl.exe/c main.cpp
运行时,编译器不知道foo的用法是否正确(因为foo在另一个文件foo.cpp中),只有借助头文件中的声明函数来判断。对main.cpp进行编译时,不会涉及foo.cpp文件,只会设计main.cpp和foo.h(因为foo.h被include)文件。头文件的作用如图1.1所示