【问题标题】:How to find out where a C struct is declared?如何找出声明 C 结构的位置?
【发布时间】:2016-11-02 06:50:02
【问题描述】:

我正在尝试将日志记录添加到 Web 代理 Polipo,作为其中的一部分,需要在以下函数 following line 中记录 url 请求:

httpClientRequest(HTTPRequestPtr request, AtomPtr url)

从编译中我看到 AtomPtr 是一个 _Atom 类型的结构,但我找不到它的定义位置,以便我可以在日志语句中引用 url 的文本。在 C 代码中查找结构定义的规范方法是什么?

【问题讨论】:

  • 您需要搜索 .h 文件。 grep 工具在这种情况下很有用。许多 IDE 都提供此功能。
  • 这取决于您的系统和环境。如果您使用的是 IDE,它通常具有查找内置定义的功能。如果您使用的是命令行,那么有些命令可用于在一组文件中查找文本(命令的名称取决于您使用的操作系统)。
  • -D_Atom=123编译,看看第一个错误在哪里

标签: c struct types polipo


【解决方案1】:

您可以像 this 一样搜索 AtomPtr 并查看 AtomPtr 的定义位置

typedef struct _Atom {
    unsigned int refcount;
    struct _Atom *next;
    unsigned short length;
    char string[1];
} AtomRec, *AtomPtr;

【讨论】:

    【解决方案2】:

    不幸的是,据我所知,您不能从 C 中的源代码做到这一点。
    如果您在 Linux 上工作,并且您的源代码都在 src/ 目录中:

    $ find src/ -name ".*\.h" | xargs grep -e "struct _Atom"
    

    【讨论】:

      【解决方案3】:

      如果你在Linux上工作,那么在当前目录中grep struct关键字,在文件中查看它的定义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-03
        • 2021-12-13
        • 1970-01-01
        相关资源
        最近更新 更多