[英]something about inet_ntoa()
我使用函数char* inet_ntoa(struct in_addr in),
编写服务器char* inet_ntoa(struct in_addr in),
当我包含头<sys/socket.h>
和<netinet/in.h>
,可以使用编译器警告生成可执行二进制文件,但是段当程序处理来自inet_ntoa
的返回字符串时,会发生inet_ntoa
。 但是当我添加标题<arpa/inet.h>,
一切似乎都没问题。
怎么了?
arpa/inet.h
包含char* inet_ntoa(struct in_addr in)
。 如果您不包含此标头,则编译器将使用隐式声明int inet_ntoa()
。 错误的声明很容易导致段错误,特别是如果你在系统中sizeof(int)!=sizeof(void*)
。
如果您使用的是gcc
,可以添加-Wall
标志。 gcc
会警告你在没有明确声明的情况下使用函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.