相关疑难解决方法(0)

在Visual Studio中显示C++文件的#include层次结构

问题:我有一个大型的Visual C++项目,我正在尝试迁移到Visual Studio 2010.它是各种来源和不同年龄段的大量组合.我遇到了问题,因为有些事情包括winsock.hwinsock2.h.

问题:显示#includeVisual Studio C++源文件的层次结构有哪些工具和技术?

我知道cl /P获取预处理器输出,但是没有清楚地显示哪个文件包含哪些其他文件(在这种情况下/P输出为376,932行8-)

在一个完美的世界中,我想要分层显示哪些文件包含哪些其他文件以及行号,以便我可以跳转到源代码:

source.cpp(1)
  windows.h(100)
    winsock.h
  some_other_thing.h(1234)
    winsock2.h
Run Code Online (Sandbox Code Playgroud)

c++ include visual-studio

159
推荐指数
5
解决办法
6万
查看次数

如何在大型C++项目中检测不必要的#include文件?

我正在研究Visual Studio 2008中的一个大型C++项目,并且有很多文件带有不必要的#include指令.有时#includes只是工件,一切都会被删除,但是在其他情况下,类可以向前声明,#include可以移动到.cpp文件中.是否有任何好的工具可以检测这两种情况?

c++ dependencies header include visual-studio-2008

95
推荐指数
7
解决办法
3万
查看次数

如何轻松查看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
查看次数

Boost对"仅头文件库"和"自动链接"的意义是什么?

Boost Library Documentation页面上,有两个名为" Header Only Libraries "和" Automatic Linking "的类别.
我认为"仅限头文件库"意味着您不必链接Boost.Timer库以便使用它们,而"自动链接"意味着您必须链接.
但是当我使用时timer,我必须链接一个名为的静态或动态库libboost_timer.a(libboost_timer.so.1.48.0以及Boost.Timer各种软链接到linux lib路径下的这些),这显然是确切的库文件Boost.System.我甚至需要来链接Boost.ChronoBoost.Asio,虽然这是可以理解的是,库本身使用的是需要链接一些其他的库.
另一方面,asio已明确声明Boost.Timer属于"自动链接",但没有任何类似的库文件timer.
那么,作为" 仅限标题库 "还是" 自动链接 " 实际上意味着什么呢?还是纯粹是一个错误?

c++ linker boost header

15
推荐指数
2
解决办法
3432
查看次数

如何在linux上找到大型项目的头依赖项

我正在做一个非常大规模的项目,编译时间长.我可以在Linux上使用哪些工具(最好是开源)来查找包含最多的文件并优化其用途?为了更清楚,我需要一个工具,根据依赖关系,我会告诉我哪些标题最多.顺便说一句,我们使用分布式编译

c++

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

编译时实际包含哪些文件

我有一个非常大的代码,其中很多是遗留代码.我想知道所有这些文件中哪一个参与编译.代码是用GNU编译器编写的,主要用C/C++编写,但也有一些在其他程序中编写.任何建议将受到高度赞赏.

谢谢,

卡察夫.

我在linux下编译混合脚本/ makefile.我想以某种方式用一个工具"包装"这个构建,该工具将给出构建中使用的所有源文件的输出,最好是具有绝对路径名.

你说什么?

c c++ gcc g++

7
推荐指数
2
解决办法
4762
查看次数

C文件包含的所有头文件的列表

我试图"武装"编译一个C文件,它包括递归的许多头文件..我正在尝试找到这些头文件的列表..有一个更简单的方法来查找它包括的所有头文件的列表?

c c++

7
推荐指数
1
解决办法
5423
查看次数

地图#include的工具

是否有可用的工具将采用一组源文件并以图形方式映射它们如何通过#include链接?

我想看看哪里有任何循环引用.

c++ include

6
推荐指数
2
解决办法
299
查看次数

识别 C++ 必要包含的快速方法

在 Linux 上,确定#includeC++ 项目所需的必要语句的快速方法是什么?

我的意思是,假设有人从网络上给你一个片段,但没有提供必要的 #include 语句。有没有一种方法可以让您运行 Linux 命令或编译器命令选项并确定缺少哪些函数或类,并且作为奖励,在硬盘驱动器上确定头文件中可能包含这些内容的位置。

c++ include

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

检查冗余包含的头文件

有没有办法找出C/C++源文件中包含的所有冗余头文件?

c c++

3
推荐指数
1
解决办法
3044
查看次数

编辑源文件时,'make'不会重新编译

我正在用C语言编写Conway的生命游戏的一些实现.源代码分为三个文件:main.cfunctions.c/ functions.h,我在其中放置函数定义和声明.

现在,要创建一个单元格网格,我有一个这种类型的矩阵:

Cell grid[GRID_HEIGHT][GRID_WIDTH];
Run Code Online (Sandbox Code Playgroud)

where GRID_HEIGHTGRID_WIDTH是常量定义在functions.h:

#define GRID_HEIGHT 10
#define GRID_WIDTH 10
Run Code Online (Sandbox Code Playgroud)

程序运行正常,使用make和Makefile编译.但问题是:如果我尝试更改,GRID_HEIGHT或者GRID_WIDTH当我再次运行我的Makefile时它会说所有文件都是最新的!我已经尝试使用良好的方式进行编译,gcc main.c etc.并且它应该运行.那么,为什么make不重新编译源代码呢?

这是我的Makefile:

CC = gcc
OBJECTS = main.o functions.o

Game\ of\ Life : $(OBJECTS)
    $(CC) $(OBJECTS) -o Game\ of\ Life -lncurses

%.o : %.c
    $(CC) -c $< 
Run Code Online (Sandbox Code Playgroud)

c makefile recompile

3
推荐指数
1
解决办法
4594
查看次数

是否可以在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
查看次数