Soa*_*apy 3 c++ precompiled-headers
是否可以使用像编译库一样的预编译头?例如,我可以创建一个包含预处理器的头,如下所示:
#include <iostream>
#include <string>
#include "boost_headers.hpp"
Run Code Online (Sandbox Code Playgroud)
将其编译成PCH然后分发PCH而不必分发用于创建它的头文件?
不会.预编译头文件有多个方面,使它们不适合作为分发格式.
问题是PCH通常(在MSVC和GCC中,Clang略有不同)实现为内部编译器状态的简单转储.加载PCH意味着用PCH中的状态替换编译器状态.没有中间立场 - 编译器无法将PCH的状态合并到当前状态.
Clang的PCH实现方式不同,但仍然必须是第一件事,因为如果PCH之前有任何内容,C++编译模型仍然意味着PCH可能无效.Clang的模块支持基本上描述了一个允许合并PCH的改变的编译模型.(正确地进行合并还涉及很多工作.)