2015-10-07 39 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