预编译头文件(Precompiled Headers)
背景¶
即使没有使用模板,C++头文件也可以变大非常庞大,然后导致编译时间过长。而模板加重了这种问题,而各个编译器厂商提供了一种名为“预编译头文件”(precompiled header)的机制,来缓解这个问题。
- “预编译头文件”并不是标准库的范畴,是编译器厂家提供的方案
示例:MSVC¶
来源:TheCherno/Hazel: Hazel Engine (github.com)
代码¶
-
hzpch.h
#pragma once #include "Hazel/Core/PlatformDetection.h" #ifdef HZ_PLATFORM_WINDOWS #ifndef NOMINMAX // See github.com/skypjack/entt/wiki/Frequently-Asked-Questions#warning-c4003-the-min-the-max-and-the-macro #define NOMINMAX #endif #endif #include <iostream> #include <memory> #include <utility> #include <algorithm> #include <functional> #include <string> #include <sstream> #include <array> #include <vector> #include <unordered_map> #include <unordered_set> #include "Hazel/Core/Base.h" #include "Hazel/Core/Log.h" #include "Hazel/Debug/Instrumentor.h" #ifdef HZ_PLATFORM_WINDOWS #include <Windows.h> #endif
-
hzpch.cpp
-
例如,使用vector,无需
#include<vector>
,直接#include "hzpch.h"
工程配置¶
Visual Studio¶
- 项目 > 右键 > 配置 > 配置属性 > C/C++ > 预编译头
- 预编译头 > 设置成“使用”
- 预编译头文件 > 输入"hzpch.h"