当前位置:  开发笔记 > 编程语言 > 正文

有没有办法在VC++中使用预编译的头文件而不需要stdafx.h?

如何解决《有没有办法在VC++中使用预编译的头文件而不需要stdafx.h?》经验,为你挑选了1个好方法。

我有一堆遗留代码,我需要编写单元测试.它在任何地方使用预编译的头文件,因此几乎所有.cpp文件都依赖于stdafx.h,这使得为了编写测试而难以破坏依赖性.

我的第一直觉是删除所有这些stdafx.h文件,这些文件大部分都包含#include指令,并根据需要将这些#includes直接放在源文件中.

这将使得必须关闭预编译的头文件,因为它们依赖于像stdafx.h这样的文件来确定预编译头文件的停止位置.

有没有办法保留没有stdafx.h依赖项的预编译头文件?有没有更好的方法来解决这个问题?



1> Len Holgate..:

是的,还有更好的方法.

问题,恕我直言,预编译标题的'向导样式'是他们鼓励不需要的耦合,并使重用代码比它应该更难.此外,使用"只是坚持stdafx.h中的所有内容"样式编写的代码很容易维护,因为更改任何头文件中的任何内容都可能导致整个代码库每次都重新编译.这可以使简单的重构永远,因为每个更改和重新编译周期都需要更长的时间.

恕我直言,更好的方法是使用#pragma hdrstop和/ Yc和/ Yu.这使您可以轻松设置使用预编译头的构建配置,还可以构建不使用预编译头的配置.使用预编译头文件的文件与源文件中预编译头文件本身没有直接依赖关系,这使得它们可以使用或不使用预编译头进行构建.项目文件确定哪个源文件构建预编译头文件,并且每个源文件中的#pragma hdrstop行确定哪些包含从预编译头文件(如果使用)中获取,哪些包含直接从源文件中获取...这意味着当做维护,你会使用没有的配置 使用预编译的头文件,只有重建头文件后需要重建的代码才会重建.完成构建时,您可以使用预编译的头配置来加速编译过程.使用非预编译的头部构建选项的另一个好处是,它确保您的cpp文件仅包含他们需要的内容并包含他们需要的所有内容(如果您使用预编译头的'向导样式',则很难.

我在这里写了一些关于它如何工作的文章:http: //www.lenholgate.com/blog/2004/07/fi-stlport-precompiled-headers-warning-level-4-and-pragma-hdrstop.html(忽略关于/ FI的东西)我有一些使用#pragma hdrstop和/ Yc/Yu方法构建的示例项目:http://www.lenholgate.com/blog/2008/04/practical-testing-16- --fixing-a-timeout-bug.html.

当然,从"向导式"预编译头文件使用到更加受控的样式通常是非常重要的......

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有