0

就像 JavaScript 能够操纵 DOM 一样,因为浏览器将 DOM 以对象的形式暴露给 JavaScript。这是否与 C++ 能够在屏幕上进行绘图之类的操作相同?操作系统是否以 C++ 类的形式创建 C++ 接口,或者操作系统是否有一些我的特定 C++ 版本知道如何实现的通用接口?

在此处输入图像描述

4

3 回答 3

4

C++ 与操作系统的交互很少。例如,它不知道屏幕或绘图——尽管其他库,如 OpenGL,可能。

标准 C++03 本质上将其与主机系统的交互限制为内存管理(分配和解除分配)、文件流操作、日期和时间访问以及本地化信息(不过我可能会忘记一些事情)。C++11 增加了一些案例,例如处理线程代码和访问系统的随机设备(如果可用)。

所有这些都是完全未指定的,每个 C++ 实现都有自己的代码,具体取决于它运行的系统。许多 C++ 实现正在使用的一个重要接口称为POSIX,它公开了一个 C API。

于 2013-05-09T21:07:29.143 回答
2

操作系统是否以 C++ 类的形式创建 C++ 接口

不,这些类是由各种 C++ 库定义的,包括标准库。

或者操作系统是否有一些我特定版本的 C++ 知道如何实现的通用接口?

我想你可以这样说。操作系统将具有较低级别的 API(可能基于函数调用),然后将其包装为类库。

于 2013-05-09T21:06:24.513 回答
2

如果从操作系统的角度来看,它为图形、IPC 和 IO 等事物提供 API,具有通用接口。通常,这采用可链接子程序的形式,使用该操作系统的调用约定标准。创建语言的人(编译器或解释器)将提供他们自己的代码来连接这些子例程,以便您可以在用户代码中使用它们。对于 C 编译器,这通常采用直接调用那些 OS 例程的形式。对于高级语言,通常会有一层代码为您处理一些细节,无论是将 cookie 转换为类,还是像您在某些脚本语言中看到的完整的可移植高级工具。

在 C++ 的情况下,通常您会查看 STL,看看是否有可以使用的东西。如果没有,您的典型回退是像 C 用户那样直接调用操作系统例程。过去的情况是,除了基本文本 I/O 之外,大多数东西在 STL 中都不可用,因此您必须退回到直接进行操作系统调用。但是,该语言的最新版本已经开始为 STL 的典型 OS 功能添加越来越多的接口。此外,如果您不介意下载、安装并弄清楚它是如何工作的, Boost中通常会有您想要的东西。

于 2013-05-09T21:06:55.413 回答