Unions
Virtual Destructors
Casting
Conditional and Action Breakpoints
Safety in modern C++ and how to teach it
Precompiled Headers in C++
在大型项目中预编译头(PCH)可能更常用。
获取头文件并转换到一种编译后的格式,这一编译器就可以直接使用,而不需要每次编译都读取
如STL,每次#include<vector>都需要读取整个头文件,vector的头文件也需要读取。
这样编译时间就会很长。并且每次都要重复编译。
因此预编译头就把一大堆头文件编译一次,处理成二进制格式,这样编译器就可以很快处理。
Not to do
预编译头重新构建也需要花时间,因此不要把经常改动的文件放进去,
因此预编译头常用于外部库。如STL,glfw
1 |
|
那么如果不用预编译头的话,每次编译的中间文件都会把这一大堆头文件里的代码复制进去。(实测有接近4w行,就为了一个hello world)
所以只需要在做一个cpp文件
1 | //pch.cpp |
在这个文件的C++属性中开启创建预编译头属性

并在项目设置中同样位置设置成使用预编译头,并选择对应的头文件。

那么就会在对应位置生成一个预编译头的输出文件
Cherno也演示了用g++如何使用预编译头。直接编译pch.h,会出现一个gch文件,这也就是预编译头的输出文件了。