【问题标题】:How to find where header is included如何查找包含标题的位置
【发布时间】:2014-04-29 14:09:44
【问题描述】:

我遇到了一些令人讨厌的错误,其中一个头文件包含在不同的链接中(即,带有和不带有“extern C”的stdio.h)。 所以,我需要找到一个特定的头文件包含在哪里。

我知道 doxygen,但不幸的是,我感兴趣的头文件是 stdio.h,它也包含在 Qt 中。 所以(我熟悉的)使用 doxygen 的唯一方法是扫描整个 Qt 文件夹。这可能需要很长时间。

那么,是否可以在不为项目中的每个标题绘制包含图的情况下找出包含一个标题的位置?或者有没有其他方法可以解决这个问题?

【问题讨论】:

  • 你可以试试gcc -E 对文件进行预处理,看看头文件是从哪里来的;或者您可以只搜索头文件所在的 -Ipath。
  • 谢谢!这确实是一种可能的方式,虽然不如包含图那么生动
  • @Mine 您能否将您的评论作为答案,以便我接受?

标签: c++ c qt


【解决方案1】:

你可以尝试gcc -E对文件进行预处理,看看头文件来自哪里;

或者你可以搜索你的-Ipath 头文件在哪里。

【讨论】:

    【解决方案2】:

    我会使用 grep:

    grep --color --binary-files=without-match -R -n -i "stdio.h" *

    这将递归搜索一棵树,检查每个文本文件的 stdio.h,打印每个匹配的文件名和找到它的行号。

    【讨论】:

    • 我在 Windows 上,所以这不完全适合我 :)
    • 我也是。有许多用于 Windows 的 grep 端口。 Cygwin 运行良好,并且还为您提供了 bash 和许多其他工具。此外,内置的 Windows 资源管理器搜索将在索引位置的文件内进行字符串搜索。
    猜你喜欢
    • 2012-11-20
    • 1970-01-01
    • 2013-04-04
    • 2017-12-16
    • 2016-05-30
    • 2016-03-01
    • 2017-12-09
    • 2019-07-31
    相关资源
    最近更新 更多