如何链接标题和翻译文件
How to link a header and a translation file?
C++编译器如何知道它可以在哪个翻译单元或源文件中找到标头中的声明?我的意思是,标头中各种声明的实现可以在多个文件中,对吧?那么编译器如何知道要选择哪一个呢?
而且,当使用外部变量时,编译器如何知道它是在哪个文件中定义的?
编译器不知道在哪里找到定义。
链接器是查看已编译对象的工具,并将包含标头的对象与包含函数或外部变量实现的对象/库链接在一起。链接器将它应该汇集在一起的对象文件和库的列表以及它应该查找的对象文件和库的列表作为输入。
由于原始问题的术语,我误解了这个问题,所以这个答案实际上并没有回答这个问题。但是,我将把它留在这里,以供将来参考预处理器。
预处理器的 #include
指令可以看作是在源文件中#include
指令所在的位置创建一个临时文件,其中包含所有标头的内容。
如果您使用的是 GCC,则可以在编译文件时使用 -E
选项,告诉 GCC 在预处理阶段后停止,以便您可以自己查看此文件。
为了使编译器知道特定声明位于哪个文件和源代码行上,预处理器输出所谓的"line"指令。这些是编译器识别并用于设置当前文件名和行号的特殊指令(与预处理器指令非常相似)。例如,请参阅GCC手册中的这一部分。
相关文章:
- 不同翻译单元中不可重载的非内联函数定义
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 对于C++,方括号中的标题必须总是在引号中的标题之上吗
- 库标题在标题中不可见,但在 cmake build 下.cpp文件中完全可见.为什么?
- 需要将一行代码从C++ Qt翻译成PyQt
- 为什么未命名的结构内联变量在每个翻译单元中没有相同的地址?
- 为什么我不应该把所有东西都放在标题中?
- 在没有 API 的情况下使用谷歌翻译文本
- WinAPI 检查窗口是否具有常规标题栏
- 如何更改窗体上所有控件的标题?[C++生成器]
- 提升用于解析标题列的精神语法
- 所以我正在为我的学校作业练习继承,但我无法正确实施标题保护
- 如何执行 cppcheck 交叉翻译单元 (CTU) 静态分析?
- 模板变量是否允许在多个翻译单元中并有效合并?
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- 使用类 ?C++ 和 SFML 以及标题中的 15 个字符
- Gtkmm 窗口为空白,不显示任何小部件或标题
- 我将如何在 cpp 中生成一个随机且独特的标题
- std::带有颜色和标题的 clog 包装器无法正确打印整数
- 如何链接标题和翻译文件