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

时间:2017-06-18 14:52:02

标签: c++ linker

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

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

默认情况下,sys/*.h头文件是否都包含在Unix上的标准库中,或者我遗漏了什么?

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

1 个答案:

答案 0 :(得分:2)

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

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

还发现了这个有趣的读物:Difference between C standard library and C POSIX library