2012-07-07 23 views
0

我試圖從resolv.h的_res結構中讀取我的DNS服務器地址。根據man 3 resolver,設置代碼應該是。resolv.h的使用

#include <netinet/in.h> 
#include <arpa/nameser.h> 
#include <resolv.h> 

extern struct state _res; 

然後我只是讀出我需要的東西。我的問題是,試圖編譯這個我得到

resolver.c:5:21: error: conflicting types for '__res_state' 
extern struct state _res; 
        ^
/usr/include/resolv.h:251:16: note: expanded from macro '_res' 
#define _res (*__res_state()) 
      ^
/usr/include/resolv.h:249:28: note: previous declaration is here 
extern struct __res_state *__res_state(void) __attribute__ ((__const__)); 
         ^
1 error generated. 

由clang。

我在做什麼錯?

回答

3

你不應該自己聲明_res - resolv.h包括正確的聲明(儘管手冊頁暗示)。

+0

我明白了!我誤讀了手冊頁還是實際上錯了? – McEnroe 2012-07-07 05:00:06

+0

@McEnroe:我認爲這只是錯誤的。 – caf 2012-07-07 06:19:04

2
#include <netinet/in.h> 
#include <arpa/nameser.h> 
#include <resolv.h> 


int main() { 

    // call this first 
    res_init(); 

    // do something with this list it contains list of dns servers 
    _res.nsaddr_list[0]; 

}