Какие заголовочные файлы необходимы для запуска этого фрагмента кода? - PullRequest
0 голосов
/ 30 мая 2010

Это от здесь , но происходит сбой при компиляции:

int main(int argc, char **argv)
{
    struct hostent {
        char *h_name; // main name
        char **h_aliases; // alternative names (aliases)
        int h_addrtype; // address type (usually AF_INET)
        int h_length; // length of address (in octets)
        char **h_addr_list; // alternate addresses (in Network Byte Order)
    };
    #define h_addr h_addr_list[0] // First address of h_addr_list.


    struct hostent *info_stackoverflow;
    int i = 0;
    info_stackoverflow = gethostbyname( "www.stackoverflow.com" );
    printf("The IP address of %s is %s", 
           info_stackoverflow->h_name, 
           inet_ntoa( * ((struct in_addr *)info_stackoverflow->h_addr )));
    /* aliases */
    while( *(pc_ip->h_aliases + i) != NULL )
    {
        printf("\n\tAlias: %s", *(pc_ip->h_aliases + i) );
        i++;
    }
}

Ответы [ 2 ]

0 голосов
/ 30 мая 2010
#include <stdio.h>
#include <winsock.h>

Хотя struct hostent уже определен Winsock, поэтому вам нужно удалить определение hostent из своего фрагмента кода.

Как отметил dmazzoni, pc_ip не объявлено в этом коде. Он используется как указатель на структуру hostent, поэтому вы можете заменить pc_ip на info_stackoverflow.

Когда вы ссылаетесь, вам нужно будет ссылаться на ws2_32.lib. Во время выполнения у вас могут возникнуть проблемы, пока вы не добавите вызов к WSAStartup в начале кода и к WSACleanup в конце, прежде чем вернуться от main.

0 голосов
/ 30 мая 2010

Вам нужны эти три заголовка:

#include <stdio.h>
#include <netdb.h>
#include <arpa/inet.h>

Вы должны избавиться от своего собственного определения struct hostent. Он уже определен для вас в netdb.h, и ваше определение будет конфликтовать.

Совет: попробуйте "man gethostbyname" практически на любой системе Unix; страница руководства по большинству функций C скажет вам, какие заголовочные файлы включить.

Это все равно не скомпилируется, потому что pc_ip не определен. Я полагаю, вам не хватает части вашего фрагмента кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...