2

我正在尝试使用函数 gethostbyname,但我的代码:

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

    struct hostent *hp = gethostbyname(hostname);

    ...

}

不断返回:

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

有谁知道我的语法有什么问题?

谢谢

4

2 回答 2

3

你忘了#include <netdb.h>。因为您没有包含此文件,所以您遇到了“默认 int”规则。基本上,在 C 语言中,如果函数没有原型,则假定为:

int function_name();换句话说,“返回一个 int,采用未知数量的参数”。

正确声明函数原型(在这种情况下通过包含标头)将避免这种情况。

于 2011-11-29T22:32:19.053 回答
0

我认为您忘记包含netdb.h头文件,因此编译器对函数一无所知,gethostbyname并假定它返回整数。然后它会抱怨,因为在这种情况下,您会将整数转换为指针。您需要包含一个标头来为编译器提供正确的类型信息。

于 2011-11-29T22:33:50.470 回答