0

我试图通过从 resolv.h 的 _res 结构中读取它来找出我的 DNS 服务器地址。根据 man 3 resolver 设置代码应该是。

#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.

铿锵声。

我究竟做错了什么?

4

2 回答 2

3

您不应该声明_res自己 -resolv.h包括正确的声明(尽管手册页暗示了什么)。

于 2012-07-07T03:33:24.150 回答
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];

}
于 2012-07-07T04:16:24.887 回答