在C ++中使用模板是否需要一些任务初始化?

时间:2014-08-20 22:15:01

标签: kernel c++

在能够使用C ++的某些功能进行内核开发之前,必须完成一些工作。例如,为了能够有效地使用类,必须使例程调用构造函数和析构函数属性。

可以禁用不需要的其他功能,例如RTTI(运行时类型信息)。

是否需要完成任何额外的工作才能使用模板,假设类正常工作?

1 个答案:

答案 0 :(得分:3)

我认为主要的问题是编写运行时代码来遍历堆栈以进行异常处理。内核和编译器需要就调用约定的细节达成一致,比如堆栈的结构,以及如何注册,发现和调用析构函数。

如果你想支持异常处理,那么你(基本上)必须启用RTTI,因为C ++ catch语义可以进行动态类型匹配。

另一个问题可能是内存分配。 new很自然地映射到malloc,但是如果你有一个带有额外参数的奇怪kmalloc(比如Linux那样),那么可能需要一些思考。

模板,以及对构造函数和析构函数的调用(除了异常处理)完全由编译器处理,因此应该只是工作。"