【问题标题】:undefined reference to INIT_LIST_HEAD in list.hlist.h 中对 INIT_LIST_HEAD 的未定义引用
【发布时间】:2016-01-04 11:07:31
【问题描述】:

我想在list.h 中使用函数INIT_LIST_HEAD(这是我的list.h),但我收到错误undefined reference to INIT_LIST_HEAD。 这是我的源代码:

#include <linux/list.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
        struct list_head* hd = NULL;
        INIT_LIST_HEAD(hd);

        exit(0);
}

【问题讨论】:

  • 不是函数。它在标题中定义为宏。
  • 只有在定义了__KERNEL___LVM_H_INCLUDE 时才读取标题;在通常的包含防护内还有第二个 #if 防护。因此,一种可能性是您包含了一个空标题并且INIT_LIST_HEAD 被解释为常规函数。(struct list_head 没有错误消息,因为可以定义指向不完整类型的指针。)
  • @MOehm 感谢您的回复。我现在明白了。所以我不能在我的程序中使用INIT_LIST_HEAD()
  • 这是一个 Linux 内核头文件。不打算在用户代码中使用。如果你稍微摆弄一下它可能会起作用。

标签: c undefined-reference


【解决方案1】:

使用

#include <linux/lvm.h> 

而不是

#include <linux/list.h>

【讨论】:

  • 感谢您的回复。很抱歉打扰你,但我试过了,但没有效果:(
猜你喜欢
  • 2011-03-27
  • 2022-01-22
  • 2016-04-04
  • 2015-11-03
  • 2011-08-11
  • 2019-07-22
  • 2015-07-20
  • 2019-06-22
  • 2012-04-02
相关资源
最近更新 更多