【发布时间】:2011-02-24 19:53:18
【问题描述】:
假设一个操作系统/内核是用 C++ 编写的,并且没有“做”任何纯 C 风格的东西,而是公开了基于成熟 C++ 标准库构建的 C 标准库。这可能吗?如果不是,为什么?
PS:我知道 C 库是“C++ 的一部分”,但假设它在内部基于基于 C++ 的实现。
小更新:似乎我在这里引发了关于我的规则“允许”什么的讨论。一般来说:C 标准库实现应该尽可能使用 C++/Right (tm)。我主要考虑算法和在幕后对静态类对象进行操作。我并没有真的排除任何语言特性,而是试图将重点放在理智的 C++ 实现上。关于 setjmp 示例,我看不出为什么有效的 C(将使用其他在 C++ C 库中预先实现的部分或根本不使用任何其他库函数)会违反我的“规则”。如果 C++ 库中没有对应的库,为什么还要争论它的使用。
【问题讨论】:
-
我看不到内核的实现语言和用户代码之间的关系。
-
@JackN:完全没有,请重新阅读这两个问题。你/我的“重复”专门关于 pthreadstd::thread,这是关于标准 C 库与 C++ 的。
-
@AProgrammer:肯定有几个库函数需要与内核交互才能工作(我在想文件 I/O 等...)?
-
内核和用户代码之间的接口通常在汇编中完成,因为它需要处理器特定的东西,而不是用于语言 ABI(例如软件中断或类似 x86 上的 SYSCALL 指令)。
-
您显然可以提供一个将其包装为官方 OS 接口的 DLL,但该接口与内核本身的实现语言无关。我会使用类似于 C 的东西来促进与所有语言的接口(因此不使用非常 C 特定的可变参数函数之类的东西)。
标签: c++ c standard-library