'inet_ntoa'没有声明错误

我打算使用inet_ntoa函数写入以下代码:

printf("Got connection from: %s:%d\n", inet_ntoa(cli_addr.sin_addr.s_addr), cli_addr.sin_port); 

使用以下内容包括:

 #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> 

但是,使用g ++ / gcc我总是得到错误:

错误:'inet_ntoa'未在此范围内声明

如果我评论这行,代码就好了。

在Ubuntu12.04下运行。

谁能告诉我我错过了什么?

谢谢!

man inet_ntoa看来,你必须在包含头文件之前定义_BSD_SOURCE

 #define _BSD_SOURCE #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h>