2013-05-09 46 views
-3

我試圖編譯下面的一個C文件(稱爲main.c中)。我得到以下錯誤:無法訪問的ifreq結構定義,__USE_MISC宏觀不確定

main.c: In function ‘main’: 
main.c:9:2: error: unknown type name ‘ifreq’ 

我知道「的ifreq」結構定義一個謊言「的#ifdef __USE_MISC」中宏,然而,我無法激活代碼塊。

我制定了檢查下面的代碼的宏定義(與「海灣合作委員會的main.c -o主」編譯):

#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 
#include <net/if.h> 

int main(int argc, char **argv) 
{ 

    #ifdef __USE_MISC 
     printf("__USE_MISC defined\n"); 
    #endif 
    #ifdef _GNU_SOURCE 
     printf("_GNU_SOURCE defined\n"); 
    #endif 

    #ifdef _BSD_SOURCE 
     printf("_BSD_SOURCE defined\n"); 
    #endif 

    #ifdef _SVID_SOURCE 
     printf("_SVID_SOURCE defined\n"); 
    #endif 

} 

其結果是,它們都被定義,但「_GNU_SOURCE」一個。但是,我仍然無法使用「net/if.h」文件中包含的「ifreq」結構的定義。

有人可以幫忙嗎?

回答

2

你省略struct關鍵字(在C,一個結構定義爲不是typedef

#include <stdio.h> 
#include <net/if.h> 

int main(int argc, char **argv) 
{ 
struct ifreq id_ifreq; 
fprintf(stdout, ">>>>>> OK <<<<<<\n"); 
return 0; 
} 
+0

正確的,非常感謝你的幫助,我根本看不到裏面的「淨代碼/ if.h「,我認爲它應該用typedef定義...再次感謝! – Ricardo 2013-05-09 13:24:08