“inet_ntoa”未声明错误

Ron*_*Ron 5 c c++ linux ubuntu-12.04

我尝试使用 inet_ntoa 函数写入以下代码:

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

使用以下内容包括:

\n\n
#include <sys/socket.h>\n#include <netinet/in.h>\n#include <arpa/inet.h>\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
\n

错误:\xe2\x80\x98inet_ntoa\xe2\x80\x99 未在此范围内声明

\n
\n\n

如果我评论该行,则代码就很好。

\n\n

运行在Ubuntu12.04下。

\n\n

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

\n\n

谢谢!

\n

Ily*_*pov 9

man inet_ntoa看来你必须_BSD_SOURCE在包含标题之前定义:

#define _BSD_SOURCE
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
Run Code Online (Sandbox Code Playgroud)

  • 我正在使用 Centos7 并且不必定义 _BSD_SOURCE - 看起来我只是缺少 arpa/inet.h :) (2认同)