编译器在编译源(例如*.cpp
)文件时,它会创建目标文件(例如*.o
),以便稍后将它链接到其他.o
和.so
(.lib
Windows 的文件)文件并构成可执行文件。
现在对于每次创建一些.pch 文件时不编译头文件的类比情况,以便随后由链接器链接它。
现在,如果在 Visula Studio 项目的范围内定义了预编译的头文件,那么为什么 Visual Studio 会报错(例如**fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?**
)头文件未包含在 .cpp 文件中。
通过总结,这是我的问题:
- 为什么在每个 .cpp 文件中都需要项目的预编译头文件?
- 每个编译单元中存在预编译头的要求如何优化编译过程?换句话说,这个要求有什么好处?(可能由用户决定在哪里包含,在哪里不包含!)
- 如果预编译的头文件包含在一个.cpp文件中,它只使用了.pch文件中的2%,那么剩余的98%将添加到相应的.o文件中吗?