由于C通常用于微控制器并且可以在C中进行面向对象编程,因此建议使用C实现面向对象的微控制器编程吗?有什么优点和缺点?
答案 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一样高效的东西,但有更好的概述。