为什么getaddrinfo需要3个标题?

时间:2014-04-14 01:33:46

标签: c linux sockets unix networking

每当我看到getaddinfo()使用时,我都会看到它与3个标题一起出现:

#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

此外,the documentation将此功能与其他2个功能分组,并列出相同的3个标头。为什么看起来getaddrinfo()需要3个标题 - 或者至少,我们如何确定函数实际需要哪些?

1 个答案:

答案 0 :(得分:1)

正如您在问题中引用了文档一样,答案是您应始终编写接口文档的编码方式。由于记录需要这三个标题,因此在使用界面时应包含这些标题。

关于细节,getaddrinfo() API在<netdb.h>头文件中定义,但该头文件定义了一些依赖<sys/socket.h>依赖于{<sys/types.h>的其他结构和API。 1}}。

您可能认为这很愚蠢,但至少记录在案,您知道在哪里可以找到文档。因此,在具有此类依赖性但未能记录它们的项目中,解析这些依赖项要容易得多。对于记录不良的系统(甚至记录良好的系统),通常更容易使用自包含的头文件,但UNIX和Linux是相当陈旧和稳定的系统,往往遵循&#34; ain&t打破了,赢得了修复&#34;规则。