2015-10-07 43 views
0

我想在list.h(这里是我的list.h)中使用函数INIT_LIST_HEAD,但是我得到错误undefined reference to INIT_LIST_HEAD。 这里是我的源代码:对list.h中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); 
} 
+0

这是不是一个函数。它在头部被定义为宏。 – ameyCU

+1

只有在定义了__KERNEL__或_LVM_H_INCLUDE时才能读取头文件;在通常的包容卫队里面还有第二个“#if”防守队员。所以有一种可能性是你已经包含了一个空头,而'INIT_LIST_HEAD'被解释为常规函数(struct list_head没有错误信息,因为可以定义一个不完整类型的指针) –

+0

@MOehm谢谢期待你的答复。我现在明白了。所以我不能在我的程序中使用'INIT_LIST_HEAD()'? – HuangJie

回答

0

使用

#include <linux/lvm.h> 

代替

#include <linux/list.h> 
+0

感谢您的回复。我很抱歉打扰你,但我已经尝试过,它不需要影响:( – HuangJie