gpt4 book ai didi

c++ - Visual Studio 2010、Intellisense 和 PCH : what are the alternatives to ugly stdafx. h?

转载 作者:IT老高 更新时间:2023-10-28 22:03:39 27 4
gpt4 key购买 nike

我最近切换到 Visual Studio 2010 并且 Intellisense 在使用 boost 库时不会花半分钟时间显示出来,Microsoft's suggestion似乎使用了预编译的头文件。

除了我以前从未使用过它们(除非被 Ugly ATL Wizards (TM) 强制使用),所以我四处寻找以弄清楚它们是如何工作的。

基本上,Big Centralized stdafx.h 方法似乎完全错误。我从不想在我的所有源代码中包含(甚至便宜)一大堆头文件。因为我不使用 Windows 库(我制作 C++/CLI 更高级别的包装器,然后使用 .NET 与外界对话),所以我没有“一大堆不变的巨大标题”。只是 boost 和散落在各处的标准库头文件。

an interesting approach解决这个问题,但我不太清楚如何完成这项工作。似乎每个源文件都必须编译两次(如果我错了请纠正我):一次使用/Yc,一次使用/Yu。这增加了必须手动调整构建系统的开发人员的负担。

我希望找到一些“为每个源文件自动生成一个预编译头”的技巧,或者至少是一些“最佳实践”,但大多数人似乎很乐意将世界包含在 stdafx.h.

对于每个源文件,我可以使用哪些选项来使用预编译的头文件?我并不真正关心构建时间(只要它们不飙升),我只是希望智能感知快速工作。

最佳答案

对于初学者,您读错了文章。每个文件都不会编译两次。文件 stdafx.cpp 使用/Yc (c,用于创建)在其他任何内容之前编译一次,然后项目中的每个其他文件都使用/Yu (u,用于使用)编译一次,并导入先前创建的保存状态的结果来自 stdafx.cpp。

其次,这篇文章已有 7 年历史,并且在谈论 VC++ 6,所以你应该开始不信任它。但即使假设其中的信息仍然适用于 VC++ 2008 或 2010,这似乎是个坏建议。它推荐使用 /pragma hdrstop 的方法是寻找问题的解决方案。如果您的头文件中包含您不希望在每个文件中包含的内容,那么它们根本不应该出现在您的预编译头文件中。

关于c++ - Visual Studio 2010、Intellisense 和 PCH : what are the alternatives to ugly stdafx. h?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com