当前位置: 首页 > 知识库问答 >
问题:

如何找出一个C struct是在哪里声明的?

潘驰
2023-03-14

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

httpClientRequest(HTTPRequestPtr request, AtomPtr url)

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

共有3个答案

邹麻雀
2023-03-14

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

曾洲
2023-03-14

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

$ find src/ -name ".*\.h" | xargs grep -e "struct _Atom"
毕和志
2023-03-14

可以像这样搜索AtomPtr,看看AtomPtr是在哪里定义的

typedef struct _Atom {
    unsigned int refcount;
    struct _Atom *next;
    unsigned short length;
    char string[1];
} AtomRec, *AtomPtr;
 类似资料:
  • 鉴于此注释: my library的用户可以扩展其API,创建带有注释的自定义注释,如下所示: AbstractProcessor提供了一个名为getSupportedAnnotationTypes的方法,该方法返回处理器支持的注释类型的名称。但是如果我指定的名称,如下所示: 当使用注释对类进行注释时,不会通知处理器#进程方法。 因此,当使用

  • 问题内容: 我试图在react-js类中声明一个变量。该变量应该可以在不同的函数中访问。这是我的代码 在onMove上,this.test的值是不确定的。我知道我可以将值放在状态上,但我不想这样做,因为每次值更改时,都会调用render(),这是不必要的。我是新来的反应者,我做错了什么吗? 问题答案: 在React中使用ES6语法不会绑定到用户定义的函数,但是会绑定到组件生命周期方法。 因此,您声

  • 我使用的是slf4j,它是日志记录,但它并没有像预期的那样使用logback(因为logback(-test)中发生了变化)。xml不会影响日志记录行为。 此外,我删除了对任何日志库的所有间接引用(常见 谢啦!

  • 这在这个回答中出现了,并且: 在Apple LLVM 9.1.0 CLANG-902-0.39.2中,的引用第一个并打印“1”。 GCC 8.2不接受此源文本。,抱怨:“错误:以前声明为'static‘的变量重新声明为'extern'”。 C 2018 6.2.2 4规定: 由于有两个先验声明,因此以下每个“if”子句的条件为真,第一个用于第一个先验声明,第二个用于第二个先验声明: ……如果前面声

  • 所以我需要制作一个基本日历,显示特定年份和月份的日历(用户应该能够根据文本输入选择任何月份和任何年份)。 到目前为止,我已经成功地创建了一个日历obj,使用扫描仪从用户那里获取所需的月份和年份,但我的问题是,我如何找出一个月的第一天是什么?在上面的例子中,今天是星期六。我构建它的逻辑是,如果我知道第一天,我可以创建一个字符串[][]数组,通过循环从第一天开始的月份,开始显示相关日期的日期。我用扫描

  • 问题内容: 我有一个简单的类Apple从另一个简单的类Fruit继承而来。 在运行时,我可以使用 获取水果对象的实际类型,即Apple.class。 我还可以使用,并验证该水果对象是否是Apple或Fruit的实例。这两个表达式都返回true,这是正常的。 但是,有没有一种方法可以精确地确定声明的标识符类型?在这种情况下是哪个。 问题答案: 您实际上是在问有关变量声明的问题,而不是对象的实际运行时