在预编译头文件中包含resource.h是个好主意吗?

时间:2009-10-20 14:24:42

标签: visual-studio visual-c++ resources header-files precompiled-headers

VS-IDE会将//{{NO_DEPENDENCIES}}写入资源头文件。 此注释实际上是一种阻止(不必要)重建包含资源标头的cpp文件的功能。

但是,与stated in the MSDN一样,这可能导致“不良副作用”。

在我们的项目中,我们确实在resource.h中包含stdafx.h进行预编译。遗憾的是,如果资源文件发生更改,则不会重建预编译的头文件。

如果删除了NO_DEPENDENCIES,它就可以工作(但如果通过IDE更改了资源,则会再次写入。)

有没有办法阻止IDE在每次更改文件时将//{{NO_DEPENDENCIES}}写入resource.h文件?

我认为最好的方法是从预编译的头文件中排除resource.h并将它们重新包含在所需的.h和.cpp文件中。这样只需要(手动!)重建受影响的文件而不是所有文件(如果重新编译pch,就会发生这种情况)。

有任何意见吗?

1 个答案:

答案 0 :(得分:1)

我同意您自己的建议:resource.h文件可能不应该是预编译头文件的一部分。

请注意,如果应用此建议会导致编译时间过长,您可以尝试使用两个预编译的头文件:一个是当前的一个,另一个是 resource.h另一方面。后一个PCH仅由需要resource.h的文件使用。

虽然可能不太容易维护......