在面向对象的范例中使用C编程微处理器,是否可以建议?

时间:2010-12-28 14:52:19

标签: c oop embedded microcontroller firmware

由于C通常用于微控制器并且可以在C中进行面向对象编程,因此建议使用C实现面向对象的微控制器编程吗?有什么优点和缺点?

6 个答案:

答案 0 :(得分:4)

我的简短回答是否定的。在程序代码存储器,执行速度和RAM方面,微控制器受到严格限制。建议用C保持尽可能简单。 C并不意味着是面向对象的语言。你应该考虑做的最多的是使用指针和结构,但不要尝试伪造多态或任何类似的东西。

答案 1 :(得分:3)

只要你不需要多态性,就可以传递结构。但是一旦你使用多态/虚函数并将函数放在这些结构中,它就会变得非常神秘。

这也取决于你需要做什么。对于不需要OO的驾驶员,也许是申请。请记住,微控制器是低白度RAM,任何情况下你都需要始终保持低RAM占用率。

如果你不打算写超过40k的应用程序,那么普通的C就足够了,没有花哨的OO技巧。

答案 2 :(得分:3)

是的,这不仅是可能的,而且在我看来有时是可取的。

在小型系统上,您需要非常了解自己选择做事的成本。同时,组织代码的“轻量级”面向对象可能具有一些真正的优势,特别是如果您需要制作灵活的工具包以快速实现自定义,甚至允许运行时热插拔。 C中的自己动手轻量级对象实现(例如使用结构和函数指针)可以是一个很好的折衷方案。

也许最着名的例子是linux内核。

答案 3 :(得分:3)

是的,但如果您的工具链支持C ++,那么您最好使用它。如果微控制器特别受资源限制,或者应用程序有严格的实时要求,那么在使用C ++时,尤其是标准库,您会希望相当保守,但如果设计,您应该使用C语言。并且实施是OO。

答案 4 :(得分:2)

确实,您可以将OOP与C一起使用。您还可以使用#define将关键字更改为更像Python。但是,我不建议你这样做。

当我看到有人试图用C做更复杂的OOP时,它总是以不可读的代码结束。当我看到C代码时,我希望它看起来像C,而不是某人想知道C中的OOP应该如何工作。

如果你想在微处理器上使用OOP,请使用C ++。许多/大多数新的微支持它。忽略那些认为微观没有足够内存或速度的人,因为他们不知道你的微观有多快,它有多少内存,以及你的性能限制是什么。写得好的C ++会在任何一天的大小和速度上击败写得不好的C语言。

答案 5 :(得分:-2)

对于我的下一个嵌入式项目,我肯定会使用部分 C ++,并使用typedef构建一个干净的接口/类/静态对象应用程序,定义和所有其他讨厌的c。我打算利用的东西是:

  • <强>类即可。这允许我通过配置封装代码和单元测试与存根对象。
  • 接口即可。与c头文件相比,每个类都有明确的合同的强大功能,人们倾向于将其用作各种typedef,定义和东西的垃圾桶。此外,接口使我可以分离定义和实现,并允许使用存根对象进行单元测试。
  • 静态对象。我预见没有动态内存,所以所有对象都是静态的。可能一个应用程序类将定义和初始化所有内容,从而成为应用程序的配置。

总而言之,它会编译成与c一样高效的东西,但有更好的概述。