相关疑难解决方法(0)

跟踪#include依赖项的工具

有什么好建议吗?输入将是头文件的名称,输出应该是所有文件的列表(最好是树),包括它直接或间接.

c c++ header

170
推荐指数
8
解决办法
7万
查看次数

如何判断包含头文件的位置?

如何判断g ++在哪里可以找到包含文件?基本上如果我

#include <foo.h>
Run Code Online (Sandbox Code Playgroud)

g ++将扫描搜索路径,使用任何include选项添加或更改路径.但是,在几天结束时,有没有办法告诉f ++的绝对路径g ++选择编译?如果在无数的搜索路径中有多个foo.h,则特别相关.

没有一种方法可以实现...有没有办法让g ++告诉我在包括默认值和所有包含选项之后它的最终搜索路径是什么?

c c++ gcc g++ include

89
推荐指数
5
解决办法
4万
查看次数

如何轻松查看C/C++ #include图?

我正在寻找一个工具(最好是一个Visual Studio插件),它可以显示给定文件包含的所有文件,并显示这些文件包含的所有文件,依此类推.

c c++ include visual-studio

41
推荐指数
5
解决办法
2万
查看次数

头文件包含静态分析工具?

一位同事最近向我透露,我们的一个源文件在编译期间包含了超过3,400个标题.我们有超过1,000个翻译单元在构建中进行编译,导致对标题的巨大性能损失,这些标题肯定不会全部使用.

是否有任何静态分析工具可以揭示这样一片森林中的树木,特别是让我们有能力决定我们应该在哪些方面进行削减?

UPDATE

发现其中一个头文件的费用一些有趣的信息(和类型包括警卫,以优化其列入)这里而来,起源这个问题.

c c++ static-analysis header-files

26
推荐指数
1
解决办法
8574
查看次数

什么是RpcNdr.h

微软在哪里侥幸逃脱

#define small char

您不能只为该语言添加保留字,并将它们静静地包含在平台SDK中!

更重要的是我如何摆脱它!

编辑:如何查找Visual Studio中包含的内容和内容 - 在Visual Studio中显示C++文件的#include层次结构

c++ windows visual-studio-2010

14
推荐指数
1
解决办法
4638
查看次数

如何解决Visual Studio编译器崩溃

我们有一个大型Visual Studio 2005 C++/Mfc解决方案,1个项目包含大约1300个源文件(大约650 .h和650 .cpp文件).我们还使用Boost和其他一些库(COM:MSXML,Office).

最近,我添加了一些boost :: multi_index实例来加速一些事情.这一切都在大部分时间汇编.但是现在,当我正在进行完整(发布)重建时,我会在几个模块上遇到编译器崩溃.

Fatal Error C1060: "compiler is out of heap space"
Run Code Online (Sandbox Code Playgroud)

我已经尝试在预编译的头文件中减少包含(删除了除标准MFC头之外的所有内容).另外,我删除了编译器选项/ Zm200(我们在编译预编译头文件之前需要它).

奇怪的是:当我在编译器崩溃后按F7(build)时,构建过程继续没有任何问题(或者至少到下一次编译器崩溃,再次按F7).但是能够在没有任何中断的情况下完成构建将会很棒.

我可以影响各个模块的构建顺序吗?这样,我可以将"有问题"的模块放在流程的开头(并希望崩溃不只是转移到其他模块).

BTW:完整的构建大约需要90分钟.


更新:

谢谢你的回答.我能够摆脱编译器崩溃并显着减少编译时间.这是我做的:

  1. 我从预编译的头文件中删除了所有包含,只是保留了标准的windows/mfc头文件.这迫使我将更多包含添加到其他模块中,但最终所有内容都包含在需要的地方.当然,这一步增加了编译时间,但让我在下一步更有效率.
  2. 我安装了ProFactors IncludeManager的试用版.项目详细信息视图可以导出到Excel,可以非常快速地发现预编译头文件中包含的瓶颈和候选项.
  3. 大多数编译时间浪费了一些头文件,其中包含一堆其他头文件(包括更多......).我不得不使用前向声明来摆脱一些讨厌的依赖.另外,我将一些类/函数从关键标题中移到了自己的模块中.
  4. 在预编译头中放什么?(MSVC)帮助我在预编译头文件中获取包含权限.我添加了STL,Boost,Windows标题.然后添加我们自己的(或多或少稳定的,优化的)标头,以及资源头文件.
  5. 我重复了第3步和第4步,总是用IncludeManager检查新候选人.
  6. 步骤1到5使编译时间(释放模式)下降,从90到大约45分钟.
  7. 我禁用了所有浏览信息的生成,因为我们似乎没有使用它(我找不到任何有关它真正有用的信息......).这又打破了构建过程的6分钟.
  8. 我将/ MP(多处理器支持)开关添加到C++编译器命令.现在重建时间缩短到22分钟.这一切都是在一台核心PC上完成的.
  9. 我将整个解决方案转移到双核PC上.重建项目需要16分钟.
  10. 创建调试版本会快5分钟:
    • 单核机器上17分钟,
    • 双核机器上11分钟.

更新2:

上面,我提到"单核机器",实际上是一个较慢的双核机器.

c++ compiler-construction crash visual-studio-2005

11
推荐指数
1
解决办法
8981
查看次数

确定哪个文件包含某些特定的头文件

有时使用复杂的头结构会出现一些标题,但很难分辨出来.

是否有一些工具(依赖性查看器?)或方法如何找到"包含堆栈"(哪个源/哪个标题/哪个标题/ ...)包含一个特定的头文件?

如果多次包含头文件,找到第一个包含就足够了,找到所有包含是一个值得欢迎的奖励.

c c++ visual-studio-2005 header include

10
推荐指数
3
解决办法
3063
查看次数

您知道项目\文件中包含文件的工具构建树吗?

比如说,我想要一个工具(或脚本?)来获取项目(或.h文件)并构建包含在其中的“包含”的可搜索树(包含到包含到等等)。有这样的东西存在吗?我应该自己写这个吗[当然我是:),但可能有人已经写了它或者可能知道如何得到它]?

c++ scripting include

5
推荐指数
2
解决办法
3378
查看次数

如何快速调试C++包含文件问题

我们经常会遇到这样的问题,如下所示:

1>Compiling...
1>a.cpp
1>c:\apps\b.h(22) : fatal error C1083: Cannot open include file: 'boost/shared_ptr.hpp': No such file or directory
Run Code Online (Sandbox Code Playgroud)

有时它可能会很乏味,因为在一个大项目中有很多包含文件,甚至嵌套包含文件。

跟踪/哪个包含文件是包含有问题的包含文件的罪魁祸首(父级)的最佳方法是什么?

问题是它有嵌套的包含,所以需要花费一些努力才能知道哪个文件实际包含 bh

c++ debugging compiler-errors

5
推荐指数
1
解决办法
4700
查看次数

错误C2011:“ sockaddr”:“ struct”类型重新定义。参见“ sockaddr”的声明

我使用Visual Studio 2012,并尝试使静态库UDT正常工作。不幸的是,我无法编译将UDT库链接到其自身的项目,我在Windows SDK标头中遇到有关类型或宏重新定义的159个奇怪的错误。

c:\program files\windows kits\8.0\include\shared\ws2def.h(96): warning C4005: 'AF_IPX' : macro redefinition 2> c:\program files\windows kits\8.0\include\um\winsock.h(452) : see previous definition of 'AF_IPX' 2>c:\program files\windows kits\8.0\include\shared\ws2def.h(136): warning C4005: 'AF_MAX' : macro redefinition 2> c:\program files\windows kits\8.0\include\um\winsock.h(471) : see previous definition of 'AF_MAX' 2>c:\program files\windows kits\8.0\include\shared\ws2def.h(173): warning C4005: 'SO_DONTLINGER' : macro redefinition 2> c:\program files\windows kits\8.0\include\um\winsock.h(394) : see previous definition of 'SO_DONTLINGER' 2>c:\program files\windows kits\8.0\include\shared\ws2def.h(217): error C2011: 'sockaddr' : 'struct' type redefinition 2> c:\program files\windows kits\8.0\include\um\winsock.h(477) : see declaration …

c++ sockets windows static-linking visual-studio-2012

2
推荐指数
1
解决办法
8154
查看次数

是否可以在C++中获取对象的包含文件的名称?

我需要从类中实例化一个对象,比如说Cat,并且知道它包含的文件的名称.

主程序看起来应该是这样的:

    #include <iostream>
    #include <vector>
    #include "Cat.h"

    using namespace std;

    vector<string> getIncludes(Cat cat){
      ...
    }

    int main(int argc, char *argv[])
    {
      Cat cat;
      std::vector<string>list = getIncludes(cat);
    }
Run Code Online (Sandbox Code Playgroud)

Cat类头文件将是这样的:

    #include "utils.h"
    #include "animals.h"

    class Cat{
    public:
      Cat();
      ~Cat();
      void meow();
    private:
      int age;
    }
Run Code Online (Sandbox Code Playgroud)

打电话后std::vector<string> list = getIncludes(cat),list应该包含"utils.h""animals.h".

如果还有另一种方法可以在主函数中获取这些名称,我愿意接受建议.先感谢您.

c++

2
推荐指数
1
解决办法
95
查看次数