【发布时间】:2017-11-20 19:46:31
【问题描述】:
我是 C++ 新手,正在学习 C90 作为语言的预介绍。我注意到,当我包含外部头文件(例如 OpenGL 头文件)时,我还需要包含包含导出的二进制库文件。
包含在 C 标准库中的任何内容都会自动添加到我的项目中,但我可以包含 sys/socket.h 而无需显式定义任何额外的库位置!
sys/*.h 头文件是否默认都包含在 Unix 的标准库中,还是我遗漏了什么?
链接器是否必须扫描您包含的所有库,直到找到具有正确定义的正确库?
【问题讨论】:
-
1) 不要为不相关的语言发送垃圾标签! C++ 不是 C;你的文字没有任何意义! 2) 不清楚。你有什么问题? 3) 标题和链接完全不相关。
-
C 不是对 C++ 的介绍。为什么在问 C90 问题时使用 C++ 标签?您永远不需要库来包含标题。您需要一个库来使用该标头中声明的函数。
-
@Olaf 了解语言的根源!我完全理解 C 实践在 C++ 中不好,它们共享一些语法,但是是不同的语言。我不会深入学习 C,我只是想首先从根本上掌握根源和幕后。我仍然不明白我的声明是如何链接的,除非链接器扫描我系统上的每个库......也许回答问题比批评更好。
-
@Olaf 我认为您不太了解 - 我不想像我已经说过的那样深入学习该语言。我只是想了解编译如何生成可执行文件、静态/动态库等。您推荐的任何关于编译基础的书籍?我不是在编写编译器,所以不会过于复杂。 :)
-
@Olaf 好吧,既然您似乎不知道问题的答案,我想我必须这样做。不管怎么说,多谢拉。 :p