我是靠谱客的博主 大意鸡,最近开发中收集的这篇文章主要介绍VC下如何分析头文件引入错误,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题起因:

在开发易行信息终端软件的过程中,出现一个奇怪的问题:在Win32、WM5平台及Debug、Release四种组合情况下,只有WM5-Debug情况下出现FILETIME未定义错误,查出其定义是在winbase.h中,这个文件一般是通过包含windows.h文件引入的。

但为什么没有包含这个文件呢?一开始通过手工追踪,很快就在复杂的包含关系及#define中迷失了方向。

记起在编译选项中有显示包含显示文件(/ShowInclude)的选项,试试看能否解决问题。

 

分析步骤:

主要分析步骤如下:

  • 把/ShowInclude选项打开后,针对出现问题的文件进行单独编译,在编译输出中列出所有相关包含文件(可难会有上千个)。
  • 输出次序就是包含文件的引及次序,文件的包含关系在输出中以空格缩进表示。
  • 把无问题的编译输出与存在问题的编译输出进行差异化比较,除了正常差异外(如因DEBUG而额外引入的文件),针对出现差异的头文件,根据包含关系找到其引入文件。
  • 打开引入文件,分析其#define预处理设定,分析为何出现包含差异。
  • 根据原因进行故障排除。

 

具体解决情况:

在我的项目中,因为在从wxThread向boost::thread迁移过程中,文件中仍然同时包含了两个库中的头文件,由于wxThread的头文件在前,其中的宏定义影响了boost::thread正确引入windows.h,从而出现前述的错误,调整两个头文件的包含次序后,问题解决。 在四种编译组合下均正常通过。

 

转载于:https://www.cnblogs.com/easyti/archive/2008/12/30/1364954.html

最后

以上就是大意鸡为你收集整理的VC下如何分析头文件引入错误的全部内容,希望文章能够帮你解决VC下如何分析头文件引入错误所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部