存储在c ++中的非标准函数的声明在哪里?

时间:2016-11-21 14:04:43

标签: c++ c++11 visual-c++ c++14

据我所知,这些函数的原型都在各自的头文件中。标准函数的声明在标准库中,这就是我们使用术语“using namespace std”的原因。但是存储了非标准函数的声明在哪里?

1 个答案:

答案 0 :(得分:3)

标准库不必作为头文件实现。

C ++标准规定了#include <vector>时会发生什么。它不要求vector是您系统上的头文件;它可以实现为引入某些符号和类型的编译器内在函数。

它决定了当你与这些符号和类型进行交互时会发生什么。

通常很容易将其作为头文件执行;但std中有一些C ++功能无法用C ++实现。通常,“表面”交互是在C ++中完成的,但它们会依赖于魔术编译器内在函数。

大多数std都可以存在并且确实作为纯头文件存在。它的其他部分通常被编译成库,通常主要用C或C ++编写。它们与操作系统库交互,操作系统库也主要用C语言编写(有时用C ++和其他语言编写),后者又与C和汇编语言混合编写的硬件特定代码进行对话。

“运行时”库可以动态或静态地链接到您的输出,并充当C ++要求和特定操作系统提供的内容之间的一种“粘合剂”。

可以存在其他库。它们的头文件以编译器确定的方式存储,并以编译器确定的方式搜索。动态或静态地链接它们的库也是以编译器确定的方式完成的,就像存在所述库一样。

它们可以用多种语言编写,只要它们导出一个与编译器期望的ABI相匹配的接口即可。