Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么时候使用C作为面向对象语言合适?_C_Oop - Fatal编程技术网

什么时候使用C作为面向对象语言合适?

什么时候使用C作为面向对象语言合适?,c,oop,C,Oop,关于如何用C模拟面向对象的概念,有很多很好的答案。举几个例子: 什么时候使用这种模拟而不使用本机支持面向对象技术的语言是合适的 高度相关: 我会给你一个我知道的理由,因为我一直都是这样: 为独特平台开发软件时,唯一可用的编译器是C编译器。在嵌入式微控制器的世界里,这种情况经常发生。 < P>给你另一个例子:相当数量的x86 Linux内核使用C,就像它是C++一样,当对象的取向看起来是自然的(例如,在VFS中)。内核是用汇编和C编写的(如果在3.0内核中没有更改的话)。内核编码器

关于如何用C模拟面向对象的概念,有很多很好的答案。举几个例子:

什么时候使用这种模拟而不使用本机支持面向对象技术的语言是合适的

高度相关:


    • 我会给你一个我知道的理由,因为我一直都是这样:


      为独特平台开发软件时,唯一可用的编译器是C编译器。在嵌入式微控制器的世界里,这种情况经常发生。

      < P>给你另一个例子:相当数量的x86 Linux内核使用C,就像它是C++一样,当对象的取向看起来是自然的(例如,在VFS中)。内核是用汇编和C编写的(如果在3.0内核中没有更改的话)。内核编码器创建宏和结构,有时甚至类似于C++术语(例如,FoxEeAcxxxx),它们允许它们像IF那样编码。正如其他人所指出的,如果你启动一个高度面向对象的程序,你永远不会选择C;但是,当您调整基于C的代码以添加面向对象的特性时,您可能需要

      当您需要面向对象API的跨平台基础时。苹果公司就是一个很好的例子。由于完全是C语言,它可以很容易地移植,但提供了一组非常丰富的不透明对象供使用


      其灵活性的一个很好的例子是许多类型的“免费”桥接与基础(一组真正的OO Objto-C库)。在基础API中,可以很自然地使用来自核心基础的许多类型,反之亦然。如果没有一些面向对象的概念存在于核心基础库中,很难看到这种工作是如此的好。

      因为你不喜欢一个贴近,所以重新发布是不正确的。在评论中为你的情况辩护,为版主打旗子,或在meta上发帖。@dmckee你看过P.S.?为什么?是的,我看过。我确实用了另一位用户的建议重新表述了我的问题。我的问题是由两位用户添加到收藏夹中的,所以我想其他人也会感兴趣。欢迎Cris就堆栈溢出的合适问题发表意见。我看到了一个没有区别的区别。这说明将OO方法塞进c是一个好主意(尽管这是完全可能的)。@dmckee:我不同意。OO概念已被证明非常有用,特别是对于大型项目。如果您一直使用C编译器,为什么不尝试使用尽可能多的OO呢?