在面向对象的范式中使用C编程微处理器,是否建议?
-
13-10-2019 - |
题
由于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一样有效的东西,但概述要好得多。