Как использовать gethostbyname в c - PullRequest
2 голосов
/ 30 ноября 2011

Я пытаюсь использовать функцию gethostbyname, но мой код:

int handleTCP(char *hostname, char* portNo){

    struct hostent *hp = gethostbyname(hostname);

    ...

}

Продолжает возвращаться:

21: warning: initialization makes pointer from integer without a cast

Кто-нибудь знает, что не так с моим синтаксисом?

спасибо

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

Вы забыли #include <netdb.h>. Поскольку вы не включили этот файл, вы работаете с правилом «int по умолчанию». По сути, в C, если у функции нет прототипа, предполагается, что она равна:

int function_name(); другими словами «возвращает целое число, принимает неизвестное количество параметров».

Правильное объявление прототипа функции (в данном случае с помощью заголовка) позволит избежать этого.

0 голосов
/ 30 ноября 2011

Я думаю, что вы забыли включить заголовочный файл netdb.h, чтобы компилятор ничего не знал о функции gethostbyname и предполагал, что она возвращает целое число.Тогда он жалуется, потому что в этом случае вы бы конвертировали целое число в указатель.Вам нужно включить заголовок, чтобы предоставить компилятору правильную информацию о типе.

...