据我所知,函数的原型(prototype)在各自的头文件中。标准函数的声明在标准库中,这就是我们使用术语“使用命名空间标准”的原因。但是非标准函数的声明存储在哪里?
最佳答案
标准库不必作为头文件实现。
C++ 标准说明了当你 #include <vector>
时会发生什么.它不需要 vector
是您系统上的头文件;它可以作为引入某些符号和类型的编译器内在函数来实现。
它规定了当您与这些符号和类型交互时会发生什么。
作为头文件通常很容易做到这一点;但是 std
中有一些 C++ 特性无法在 C++ 中实现。通常,“表面”交互是在 C++ 中完成的,但随后它们又求助于神奇的编译器内在函数。
大部分std
可以存在并且确实作为纯头文件存在。它的其他部分通常被编译成库,通常主要是用 C 或 C++ 编写的。它们与操作系统库交互,这些库也大多用 C(有时是 C++ 和其他语言)编写,而这些库又与用 C 和汇编语言混合编写的硬件特定代码对话。
“运行时”库可以动态或静态链接到您的输出,并充当 C++ 要求和特定操作系统提供的内容之间的一种“粘合剂”。
可以存在其他库。它们的头文件以编译器确定的方式存储,并以编译器确定的方式搜索。动态或静态地链接它们的库也是以编译器确定的方式完成的,就像存在所述库的地方一样。
它们可以用多种语言编写,只要它们导出与编译器期望的 ABI 相匹配的接口(interface)即可。
关于c++ - c++中存储的非标准函数的声明在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40722068/