如何查找有关包含的问题 - 可视化包含树
How-to find issues concerning includes - visualize inclusion tree
场景
我不时在系统标头中收到编译器错误。目前例如:
c:\Programme\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
这将创建一个file.i
.这是预处理的文件 - 它包含所有已处理的标头,即如果标头的特定部分位于 ifdef 某物下并且您尚未定义该某物,则它不会包含该块。/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
相关文章:
- 编译包含字符串的代码时遇到问题
- 使用mongocxx驱动程序时包含头文件问题
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 包含矢量指针的结构的内存释放问题
- CMake 错误"源似乎不包含 CMakeLists.txt",路径/库连接问题
- 指向包含对齐 C 结构C++类的 C 指针的对齐问题
- 在包含窗口标头时难以解决循环依赖关系问题
- 在Visual Studio代码中包含自定义c++库的问题
- 双向链表问题 - 包含项目但不显示
- 包含问题:"多重定义"、"此处首次定义"
- C++ 将问题包含在其他文件中?(提升包括)
- 检查 std::any 变量是否包含 std::string 时出现问题
- 相同的代码,不同的结果?从其他项目包含有什么问题?
- 头文件的相互包含会导致问题
- 可变参数类的文件包含问题
- QWifiManager 类包含问题
- 扩展类c++的循环包含问题
- C++包含问题
- ffmpeg包含问题-缺少一些功能
- C++SDL代码::块:在头文件中声明指向全局可验证性的指针,同时避免多个包含问题