我试图通过从resolv.h的_res结构中读取来查找我的DNS服务器地址。根据man 3解析器的设置代码应该是。
#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.
by clang。
我做错了什么?
答案 0 :(得分:3)
你不应该自己声明_res
- resolv.h
包括正确的声明(尽管手册页暗示了这一点)。
答案 1 :(得分: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];
}