如果标头已经包含在预编译的标头中,我应该继续在源文件中包含标头吗?

时间:2019-09-11 04:39:19

标签: c++ include precompiled-headers

令人惊讶的是,我发现的唯一一个 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>)是否有主要建议

1 个答案:

答案 0 :(得分:1)

您可能会争辩说,任何源文件都应#include依赖于它所依赖的所有内容,而不管预编译是什么。

通过这种方法,可以更轻松地在其他项目中重用代码,而这些项目可能没有预编译那些依赖项。