C++ 如何查找有关包含的问题-可视化包含树
场景 有时我会在系统头中发现编译器错误。目前,例如: c:\Program\Microsoft Visual Studio 9.0\VC\ce\include\streambuf(55):错误C2143:语法错误:缺少“)”在“字符串”之前 和往常一样,这是一条错误消息,当然我的代码中有一个问题。然而,编译器无法告诉我它的坏处。所以我在寻找通常的嫌疑犯,例如。 在某些头文件或类似文件中使用名称空间XXX 我的问题是,我甚至不知道streambuf文件是通过什么方式包含到我的代码中的。至少我没有直接包括在内 具体问题 有没有办法得到某种“包含树”? 差不多C++ 如何查找有关包含的问题-可视化包含树,c++,c,visual-studio,include,C++,C,Visual Studio,Include,场景 有时我会在系统头中发现编译器错误。目前,例如: c:\Program\Microsoft Visual Studio 9.0\VC\ce\include\streambuf(55):错误C2143:语法错误:缺少“)”在“字符串”之前 和往常一样,这是一条错误消息,当然我的代码中有一个问题。然而,编译器无法告诉我它的坏处。所以我在寻找通常的嫌疑犯,例如。 在某些头文件或类似文件中使用名称空间XXX 我的问题是,我甚至不知道streambuf文件是通过什么方式包含到我的代码中的。至少我没有直
myClass.cpp
+ myClass.h
+ ios
...
+ streambuf
因此,我可以更好地确定错误位置。我通常使用
cl /c /P /d1PP file.cpp
这将创建一个文件.i
。这是预处理文件-它包含所有已处理的标题,即如果标题的特定部分位于ifdef something下&您尚未定义该内容,它将不包含该块。/d1PP(我认为是未文档化的)还显示了宏的实际定义位置。您还将看到谁在代码中包含了streambuf
,以及在什么时候
然后我将文件编译为
cl /c /Tp file.i (or cl /c /Tc file.i - if it's C and not C++)
要进行可视化,请尝试这个-@JBentley:谢谢。这是一个重复的编译器开关正是我要找的。不幸的是,我在发布之前找不到这个问题…谢谢。我实际上是在寻找包含树的可视化。然而,你的方法将是分析结果来源的第二步。