代码之家  ›  专栏  ›  技术社区  ›  B.Gen.Jack.O.Neill

C可以使用对象API吗?

oop c
  •  1
  • B.Gen.Jack.O.Neill  · 技术社区  · 15 年前

    您能从过程(非OO)语言访问面向对象(OO)API吗?例如,Win32 API不是OO,但我知道C++有一个包装器,使它成为OO。但这两种方法都可以吗?

    我这样问是因为我不喜欢OO语言;我是通过编程微控制器来学习C的,OO语言只是把实际的代码从你身边拿走了,我担心OOP如此流行,很快一切都会变成基于对象的。

    2 回复  |  直到 15 年前
        1
  •  6
  •   T.E.D.    15 年前

    让我以一个从70年代到另一个(?)

    OO语言所做的大量工作就是围绕这个技术添加一些额外的语法。现在不是你所有的电话都从 LibnameCallname (cookie, ... cookie.callname(... . 但实际上,在很多方面,这只是一个语法改变,使我们程序员的事情更容易(节省我们额外的不必要的打字) Libname 一切)。

    现在在某种程度上,操作系统(包括Unix,它使用文件作为它几乎所有东西的基本范例), 已经是OO了 ,和 已经有几十年了 . 它们如何处理操作系统调用实际上只是一个链接细节。作为系统程序员,这对我们来说无关紧要,只是链接必须匹配。从C++调用C++的唯一真正问题不是它的“OO”。问题是C++使用了一些自定义的名字算法来处理它的符号,而不是所有的C编译器都能处理。

    事实上,事情远不止这些。但是,如果有人在C++中写下他们所有的新操作系统调用,你可以确信C编译器供应商会找到一种方法来弥补这个差距,这样你就可以在你舒适的老家中打电话给他们。 LibnameCallname(cookie,... 来自C。


    在我看来,你说的你不喜欢的实际上是帕纳斯在1972年第一次提到的 Information Hiding -如果程序的各个部分如何工作的细节对其他部分隐藏起来,那么开发人员的工作效率会更高。

    当时是非常矛盾的。早在九十年代初,我就经常听到关于它的大争论。弗雷德里克·布鲁克斯甚至在法庭上反对 The Mythical Man-Month . (顺便说一句:如果你没有读过TMM-M, you need to .)

    问题是,今天几乎没有人反对它。这是有原因的。就连弗雷德·布鲁克斯二十年后也承认自己错了。从他的书名来看, -

    帕纳斯是对的,我错了。我 我现在确信 隐藏,今天往往体现在 面向对象编程,是 提高教育水平的唯一途径

        2
  •  0
  •   Eugene Mayevski 'Callback    15 年前

    一般来说,从普通C访问类和对象是可能的(但非常重要),但是,如前所述,C在该平台上不是一个选项。当可移植C代码不能在上述平台上使用时,这已经成为一个问题(幸运的是,Android为本机开发提供了NDK)。