每当我看到getaddinfo()
使用时,我都会看到它与3个标题一起出现:
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
此外,the documentation将此功能与其他2个功能分组,并列出相同的3个标头。为什么看起来getaddrinfo()
需要3个标题 - 或者至少,我们如何确定函数实际需要哪些?
答案 0 :(得分:1)
正如您在问题中引用了文档一样,答案是您应始终编写接口文档的编码方式。由于记录需要这三个标题,因此在使用界面时应包含这些标题。
关于细节,getaddrinfo()
API在<netdb.h>
头文件中定义,但该头文件定义了一些依赖<sys/socket.h>
依赖于{<sys/types.h>
的其他结构和API。 1}}。
您可能认为这很愚蠢,但至少记录在案,您知道在哪里可以找到文档。因此,在具有此类依赖性但未能记录它们的项目中,解析这些依赖项要容易得多。对于记录不良的系统(甚至记录良好的系统),通常更容易使用自包含的头文件,但UNIX和Linux是相当陈旧和稳定的系统,往往遵循&#34; ain&t打破了,赢得了修复&#34;规则。