<分区>
问题与 Linux 内核无关。这也不是 C 与 C++ 的辩论。
我做了一项研究,在我看来,C++ 在嵌入式系统的异常处理和内存分配方面缺乏工具支持:
Why is the linux kernel not implemented in C++? 除了已接受的答案,另请参阅 Ben Collins' answer .
"[...] anybody who designs his kernel modules for C++ is [...]
(b) a C++ bigot that can't see what he is writing is really just C anyway"" - the whole C++ exception handling thing is fundamentally broken. It's especially broken for kernels.
- any compiler or language that likes to hide things like memory allocations behind your back just isn't a good choice for a kernel."
JOINT STRIKE FIGHTER AIR VEHICLE C++ CODING STANDARDS :
"AV Rule 208 C++ exceptions shall not be used"
异常处理和内存分配是 C++ 显然缺乏工具支持的唯一点吗(在这种情况下)?
要解决异常处理问题,必须提供异常抛出后到捕获到的时间限制?
你能解释一下为什么内存分配是个问题吗?如何克服这个问题,必须做什么?
正如我所看到的,在这两种情况下,都必须在编译时提供一个上限,以在运行时发生并取决于某些重要的事情。
答案:
不,动态转换也是一个问题,但是 it has been solved .
基本上是 yes .必须通过分析所有抛出路径来限制处理异常所需的时间。
请参阅 Embedded systems programming 中幻灯片“如何在没有新事物的情况下生活”的解决方案.简而言之:预分配(全局对象、堆栈、池)。