【问题标题】:How to use gethostbyname in c如何在 c 中使用 gethostbyname
【发布时间】:2012-01-09 06:14:36
【问题描述】:

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

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

    struct hostent *hp = gethostbyname(hostname);

    ...

}

不断返回:

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

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

谢谢

【问题讨论】:

  • 如果 Evan 的回答不是问题所在:向我们展示更多代码,尤其是第 21 行是否是您向我们展示的代码之一。
  • 您的代码顶部是否确定有#include <sys/socket.h>
  • @OliCharlesworth:netdb.h 就是你所需要的。

标签: c sockets tcp gethostbyname


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。这解决了它。我犯了一个愚蠢的错误。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-02-21
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多