c++ - main.cpp 如何知道包含头文件的源文件?
问题描述
我不太明白 main.cpp 如何知道使用头文件源文件中的类定义和函数定义。
我了解如何#include HeaderName.h
包含类声明,因为我们告诉 main.cpp 包含它。但是,头文件和 main.cpp 中都没有告诉程序从HeaderSource.cpp
. 那么,它怎么知道声明的类的定义在那里呢?
解决方案
每个cpp文件单独编译;它们都是一个“翻译单元”,彼此不共享任何定义。您可以通过在 cpp 文件中定义某些内容而不是在标题中定义它来测试它;没有其他 cpp 文件会知道它。
编译生成的目标文件然后通过链接器“链接”在一起;该链接器可以看到每个目标文件,因此它知道所有函数的定义在哪里。
这个问题的答案非常详细地说明了它如何处理 x86 ELF 文件。重要的是要知道这个过程会有点不同,并且对于不同的系统会有不同的工作方式。
推荐阅读
- sql - 多层次的数组聚合
- jsonschema - 限制所有 JSON 模式中的字符?
- python - bot.py 不会运行 Traceback bot.run(TOKEN)
- vba - Powerpoint 宏“MarginRight”代码不起作用
- python - 如何使用 Matplotlib、pandas 和 sklearn 创建线性回归图?
- c# - Automapper:如果所有子属性都为空,则将父对象设置为空
- javascript - 在 React 中设置 img.src 会导致应用程序范围的减速
- python - 如何使在循环中创建的 Python Tkinter 小部件独立?
- swift - swiftUI 中的视图和 NavigationLink() 究竟是如何工作的?
- docker - Dockerizing gRPC 服务器(节点)问题:[错误:无法加载 gRPC 二进制模块,因为它不是为当前系统安装的]