如何找出声明 C 结构的位置?

How to find out where a C struct is declared?

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

中记录 url 请求
httpClientRequest(HTTPRequestPtr request, AtomPtr url)

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

如果您正在处理 Linux,那么在当前目录中 grep struct 关键字以查看它在文件中的定义。

不幸的是,据我所知,您无法在 C 中从源代码中执行此操作
如果您正在 Linux 上工作,并且如果您的源代码都在 src/ 目录中:

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

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

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