gethostbyname()返回值类型问题

改一下昵称 2012-06-29 01:03:32
我尝试不参照书上的例子自己写一段解析A记录的小程序,可遇到了一个很奇怪的问题
gethostbyname需要 netdb.h 头文件,我忘记包含它,结果GCC报错:

socket.c: 在函数‘main’中:
socket.c:9:18: 警告: 赋值时将整数赋给指针,未作类型转换 [默认启用]
socket.c:10:41: 错误: 提领指向不完全类型的指针

line:9-10 代码:
        hostname = gethostbyname("csdn.net");
printf("host is %s \n", hostname->h_name);


我很纳闷这种情况调用gethostbyname()应该报函数未定义才对,怎么还会返回整形?
...全文
222 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

没有显式声明的函数会默认返回int型
[/Quote]

++
wqkjj 2012-06-29
  • 打赏
  • 举报
回复
LZ对函数预定义的概念还不是很清晰咯
函数预定义(或者函数申明)是为了告诉编译器函数的返回类型、函数参数类型等信息,告诉编译器这些是因为编译器需要为函数在执行期间的函数栈分配地址和空间,而要达到这个目的,在C语言中是根据数据的类型来分配空间的,所以才会有函数申明这个东东。
为了方便大家偷懒,也可能是为了兼容原来一些代码书写习惯的原因,C语言约定如果不定义函数的返回类型,则缺省为int。
图灵狗 2012-06-29
  • 打赏
  • 举报
回复
1楼的正确。
W170532934 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

没有显式声明的函数会默认返回int型
[/Quote]
+++
Athenacle_ 2012-06-29
  • 打赏
  • 举报
回复
没有显式声明的函数会默认返回int型

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧