C++ extern keyword on functions. Why no just include the header file?(函数上的 C++ extern 关键字.为什么不只包含头文件?)
问题描述
如果我理解正确,这意味着
If I understand it correctly this means
extern void foo();
函数 foo 是在另一个翻译单元中声明的.
that the function foo is declared in another translation unit.
1) 为什么不直接#include 声明该函数的标头?
1) Why not just #include the header in which this function is declared?
2) 链接器如何知道在链接时到哪里寻找函数?
2) How does the linker know where to look for function at linking time?
也许我应该澄清一下,上面的声明之后是使用函数
edit: Maybe I should clarify that the above declaration is then followed by using the function
foo();
在这个翻译单元中从未定义过.
It is never defined in this translation unit.
推荐答案
1) 可能没有头文件.但是是的,一般来说,对于大型项目,如果多个翻译单元要使用该功能,您应该有一个头文件(不要重复自己).
1) It may not have a header file. But yes, in general, for large projects, you should have a header file if multiple translation units are going to use that function (don't repeat yourself).
2) 链接器搜索它被告知要查找函数和其他符号的所有目标文件和库.
2) The linker searches through all the object files and libraries it was told about to find functions and other symbols.
这篇关于函数上的 C++ extern 关键字.为什么不只包含头文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:函数上的 C++ extern 关键字.为什么不只包含头文件?
- 一起使用 MPI 和 OpenCV 时出现分段错误 2022-01-01
- 与 int by int 相比,为什么执行 float by float 矩阵乘法更快? 2021-01-01
- C++ 协变模板 2021-01-01
- 近似搜索的工作原理 2021-01-01
- 静态初始化顺序失败 2022-01-01
- STL 中有 dereference_iterator 吗? 2022-01-01
- 如何对自定义类的向量使用std::find()? 2022-11-07
- 使用/clr 时出现 LNK2022 错误 2022-01-01
- 从python回调到c++的选项 2022-11-16
- Stroustrup 的 Simple_window.h 2022-01-01