为什么我可以在不链接任何额外库的情况下包含 sys/*.h

Why am I able to include sys/*.h without linking any extra libraries?

本文关键字:包含 情况下 sys 我可以 链接 任何额 为什么      更新时间:2023-10-16

我是C++新手,正在学习C90作为对该语言的预先介绍。我注意到,当我包含外部标头(例如 OpenGL 标头(时,我还需要包含包含导出的二进制库文件。

包含的任何属于 C 标准库的内容都会自动添加到我的项目中,但我能够包含sys/socket.h而无需显式定义任何额外的库位置!

默认情况下,sys/*.h头文件是否都包含在Unix的标准库中,还是我缺少某些内容?

链接器是否必须扫描包含的所有库,直到找到具有正确定义的正确库?

C

POSIX 库是 C 标准库的超集。打开它后,看起来sys/*.h文件的函数定义都在那里,即使它们不是原始 C 标准的显式组件。

实际的函数定义包含在 Unix 的标准库中。

还发现这个,有趣的阅读: C 标准库和 C POSIX 库的区别

相关文章: