【问题标题】:How-to find issues concerning includes - visualize inclusion tree [duplicate]如何查找有关包含的问题 - 可视化包含树 [重复]
【发布时间】:2013-04-03 19:43:41
【问题描述】:

场景

有时我会在系统头文件中遇到编译器错误。目前例如:

c:\Programme\Microsoft Visual Studio 9.0\VC\ce\include\streambuf(55):错误 C2143:语法错误:在 'string' 之前缺少 ')'

与往常一样,这是一条错误的错误消息,当然我的代码中存在问题。但是,编译器无法告诉我哪里疼。所以我一直在寻找通常的嫌疑人,例如 在某些头文件或类似的东西中“使用命名空间 XXX”。

我的问题是,我什至不知道文件 streambuf 是通过哪种方式包含到我的代码中的。至少我没有直接包含它。

具体问题

有没有办法获得某种“包含树”? 类似的东西

myClass.cpp
  + myClass.h
    + ios
      ...
      + streambuf

这样我就能更好地确定错误位置。

【问题讨论】:

  • @JBentley:谢谢。这个 is 是重复的,而那个编译器开关正是我想要的。不幸的是,在发布之前我找不到那个问题......

标签: c++ c visual-studio include


【解决方案1】:

我通常使用

cl /c /P /d1PP file.cpp

这会创建一个file.i。这是经过预处理的文件 - 它包含所有已处理的标头,即如果标头的特定部分在 ifdef something 下并且您尚未定义该内容,则它将不包含该块。 /d1PP(我认为未记录)还向您展示了宏的实际定义位置。您还将看到谁在您的代码中包含了streambuf,以及在什么时候。

然后我将file.i 编译为

cl /c /Tp file.i (or cl /c /Tc file.i - if it's C and not C++)

对于可视化,试试这个 - http://www.codeproject.com/Articles/3478/Include-File-Hierarchy-Viewer

【讨论】:

  • 谢谢。我实际上是在寻找包含树的可视化。但是,在分析结果源时,您的方法将是第二步。
猜你喜欢
  • 2011-08-13
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 2011-11-04
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多