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 に答える