在能够使用C ++的某些功能进行内核开发之前,必须完成一些工作。例如,为了能够有效地使用类,必须使例程调用构造函数和析构函数属性。
可以禁用不需要的其他功能,例如RTTI(运行时类型信息)。
是否需要完成任何额外的工作才能使用模板,假设类正常工作?
答案 0 :(得分:3)
我认为主要的问题是编写运行时代码来遍历堆栈以进行异常处理。内核和编译器需要就调用约定的细节达成一致,比如堆栈的结构,以及如何注册,发现和调用析构函数。
如果你想支持异常处理,那么你(基本上)必须启用RTTI,因为C ++ catch
语义可以进行动态类型匹配。
另一个问题可能是内存分配。 new
很自然地映射到malloc
,但是如果你有一个带有额外参数的奇怪kmalloc
(比如Linux那样),那么可能需要一些思考。
模板,以及对构造函数和析构函数的调用(除了异常处理)完全由编译器处理,因此应该只是工作。"