【发布时间】: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