【发布时间】:2010-09-22 08:19:41
【问题描述】:
我有一堆需要编写单元测试的遗留代码。它在任何地方都使用预编译的头文件,因此几乎所有 .cpp 文件都依赖于 stdafx.h,这使得为了编写测试而打破依赖关系变得困难。
我的第一反应是删除所有这些 stdafx.h 文件,这些文件大部分都包含 #include 指令,并根据需要将这些 #include 直接放在源文件中。
这将使得有必要关闭预编译头文件,因为它们依赖于 stdafx.h 之类的文件来确定预编译头文件的停止位置。
有没有办法在没有 stdafx.h 依赖的情况下保留预编译的头文件?有没有更好的方法来解决这个问题?
【问题讨论】:
-
我个人使用预编译头文件(用于普通代码和单元测试),但使用名称 Precompiled.h/cpp。单元测试的预编译头文件包括额外的头文件,以便编译更快。
-
是的,有更好的方法。每个源文件只能使用一个预编译头文件,但可以为 每个 源文件或一组源文件指定 pch。您还可以指定哪些源文件使用或不使用预编译头文件。请参阅下面的答案。
标签: c++ unit-testing dependencies precompiled-headers stdafx.h