令人惊讶的是,我发现的唯一一个 really 问题( Advantages of removing includes which are already in precompiled header? )仅询问可能的编译时间收益,并提到了缺点,但没有说明这些可能是。还有其他related questions,但这些问题包括标头中的标头,而不是翻译单元中的标头,因此我想专门询问一下。
考虑:
precompile.hpp
#ifndef PRECOMPILE_H
#define PRECOMPILE_H
#include <string>
#include <iostream>
#endif // PRECOMPILE_H
precompile.cpp
#include "precompile.hpp"
main.cpp
#include "precompile.hpp"
#include <string>
#include <iostream>
int main()
{
std::string str = "hello";
std::cout << str << "\n";
}
关于是否在源文件中显式包含预编译的标头(在我的示例中为<string>
和<iostream>
)是否有主要建议?
答案 0 :(得分:1)
您可能会争辩说,任何源文件都应#include
依赖于它所依赖的所有内容,而不管预编译是什么。
通过这种方法,可以更轻松地在其他项目中重用代码,而这些项目可能没有预编译那些依赖项。