预编译头和普通包含

时间:2017-01-12 13:06:36

标签: c++ precompiled-headers

当使用预编译的头文件时,当我包含一个标头时,它是否会产生影响(或者会产生不良影响),我已将其包含在预编译头文件中,也在常规标头中?

或者换句话说:当我在另一个头文件中包含标题x并同时在我的预编译头文件中包含x时,这是否会阻止预编译头提供的优化启动?

2 个答案:

答案 0 :(得分:4)

(一般而言)。将要发生的是,在编译期间,如果您使用的是预编译头文件,并且编译器找到了预编译表单中已存在的标题,则它将选择使用预编译的表单。

事实上,最好继续使用您的包含,就好像您从未在第一时间使用过预编译的标头一样。这有助于您以后关闭预编译的头文件或修改其中的头文件列表,或者其他人决定执行不使用PCH的源代码外构建版本。

答案 1 :(得分:0)

预编译头是编译时的优化。必须像没有预编译头一样编写代码。可以使用编译器的参数完全添加对这些标头的支持,即,通过调整构建过程并在构建系统无法为您生成一个标头的情况下添加“ catch-all”标头(这些天确实应该!)! )。

TL; DR:预编译头是您在构建脚本中抛出的开关。而已。它们不应泄漏到构建脚本之外。