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

有帮助吗?

解决方案

只要您不需要多种多样,就可以通过结构。但是,一旦您使用多态性/虚拟功能并将功能放入这些结构中,它可能会变得非常隐秘。

这也取决于您需要做什么。对于驱动程序,您不需要OO,也许可以应用。请记住,微控制器是低惠特公羊,在任何情况下,您需要一直保持低RAM足迹。

如果您不打算编写超过40k的应用程序,则普通C足够好,并且没有花哨的技巧。

其他提示

我的简短答案是否定。在程序代码内存,执行速度和RAM方面,微控制器受到高度限制。建议使用C尽可能简单。 C并不意味着是面向对象的语言。您应该考虑的最多的是使用指针和结构,但不要尝试伪造多态性或类似的幻想。

是的,这不仅有可能,而且我认为有时建议。

在小型系统上,您需要非常了解选择如何做事的成本。同时,“轻量级”对象方向可能会有一些真正的优势来组织您的代码,尤其是如果您需要制作灵活的工具包来快速实施自定义,甚至允许运行时热盘。 c中的自行轻量级对象实现(例如用结构和功能指针完成)可以是一个很好的折衷方案。

也许最著名的例子是Linux内核。

是的,但是如果您的工具链支持C ++,那么最好使用它。如果微控制器特别受到资源的限制,或者应用程序具有艰难的实时要求,则您将希望在使用C ++(尤其是标准库)方面保持相当保守,但是如果设计设计,则应在C上使用它。实施是OO。

的确,您可以将OOP与C一起使用。您也可以使用#Define更改关键字以看起来更像Python。但是,我也不建议这样做。

当我看到某人尝试使用C进行更复杂的OOP时,它总是以不可读的代码结束。当我看到C代码时,我希望它看起来像C,而不是某人对C中的OOP应该如何工作的想法。

如果要在微观上OOP,请使用C ++。许多/大多数新的micros支持它。忽略那些说Micros没有足够的内存或速度的人,因为他们不知道您的微型速度是多快,拥有多少内存以及您的性能约束。书写良好的C ++每天都会击败尺寸和速度差的C ++。

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

  • 课程. 。这使我可以通过配置将代码和单元测试用存根对象封装。
  • 接口. 。与C标头文件相比,我倾向于用作各种类型,定义和其他内容的垃圾桶的C标头文件的明确合同的力量。此外,接口使我可以分离定义和实现,并允许使用存根对象进行单元测试。
  • 静态对象. 。我预见到没有动态内存,因此所有对象都是静态的。大概一个应用程序类将定义和初始化所有内容,从而成为应用程序的配置。

总而言之,它将编译成与C一样有效的东西,但概述要好得多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top