预编译的头文件.pch文件对机器敏感?

时间:2010-04-08 06:32:57

标签: c++ build visual-c++ precompiled-headers

我尝试使用以下方式重用.pch来加速构建:

  1. 在stdafx.cpp上使用/ Yc将.pch文件创建到文件夹
  2. 在项目中排除stdafx.cpp,并修改链接选项
  3. 它在我的机器上成功,但在另一台机器上失败,收到错误消息:错误C2011:'***':'struct'类型重新定义

    首先,我想问一下.pch文件是否对机器敏感?其次,上述方法是否可行?

    谢谢!

1 个答案:

答案 0 :(得分:3)

预编译头文件可以是特定于机器的,直到Visual Studio 2008 SP1(来自here):

  

预编译的头文件存储   编辑的“状态”到达   某一点,那个状态   信息可以重复使用   后续的编译器调用   显着增加构建   吞吐量。在过去的15年里,我们的   编译器已经预编译了   标题到磁盘并重新加载它们   直接进入虚拟内存   99.999%的可靠性和可观的性能提升。权衡,   然而,在一定程度上是脆弱的   我们的架构。

     

由于PCH文件本身包含   内部指针,必须加载   在虚拟的完全相同的地址   创建它的记忆