为什么我可以在不链接任何额外库的情况下包含 sys/*.h
Why am I able to include sys/*.h without linking any extra libraries?
我是C++新手,正在学习C90作为对该语言的预先介绍。我注意到,当我包含外部标头(例如 OpenGL 标头(时,我还需要包含包含导出的二进制库文件。
包含的任何属于 C 标准库的内容都会自动添加到我的项目中,但我能够包含sys/socket.h
而无需显式定义任何额外的库位置!
默认情况下,sys/*.h
头文件是否都包含在Unix的标准库中,还是我缺少某些内容?
链接器是否必须扫描包含的所有库,直到找到具有正确定义的正确库?
C
POSIX 库是 C 标准库的超集。打开它后,看起来sys/*.h
文件的函数定义都在那里,即使它们不是原始 C 标准的显式组件。
实际的函数定义包含在 Unix 的标准库中。
还发现这个,有趣的阅读: C 标准库和 C POSIX 库的区别
相关文章:
- 如何在不包含完整的文件系统头的情况下使用文件系统的类路径C++17?
- 在我的 CLR 项目中添加包含会导致无法在启用 /clr 的情况下编译 WLR
- 我需要在不使用前向声明的情况下相互包含两个头文件,导致"incomplete type"错误
- 如何减少编译时间:在包含未触及的头文件的情况下
- 为什么我可以在不链接任何额外库的情况下包含 sys/*.h
- 在以下情况下,如何在 Linux 上包含C++头文件
- 我可以在不包含 <sys/socket.h> 的情况下使用 C 套接字吗?
- 如何在不包含 Windows.h 的情况下获取 IsDebuggerPresent 的声明
- 如何在没有包含朋友的情况下使用过载操作员
- 如何在不扩展的情况下基于 RHIDE 中的环境变量添加包含目录
- 我们可以在不使用构造函数的情况下推回包含矢量的结构
- 如何在给定包含类的实例的情况下实例化嵌套类
- 在不包含文件的情况下从文件中获取特定的c++函数
- 为什么在包含类头的情况下,我的数组在main中未定义
- 在不使用CMake的情况下包含库
- 为什么 rand() 在不包含 cstdlib 或使用命名空间 std 的情况下编译
- 是否可以在没有包含保护的情况下编写头文件,并且没有多个定义错误
- 是否可以在不调用包含对象的析构函数的情况下清空映射的内容?
- Iostream中包含的Ctype方法默认情况下在程序中的固定区域设置中工作吗
- 在c++中,类只包含(默认情况下)私有成员有什么用吗