繁体   English   中英

C的更高抽象Lib?

[英]Higher Abstraction Lib for C?

是否有更高的C抽象库,它可以很容易地完成基本的操作而不必担心内存/指针等。

例如:Python提供了比C更高的抽象。它可以连接字符串,数组等。简单地说,我们在C中有任何lib来处理这个工作?

用C编程只有几个目的。想到的主要是:

  1. 您需要一种具有存储持续时间概念的语言,您可以编写使用已经获得的内存的有界空间或就地算法,从而绝对没有失败的情况。

  2. 您希望利用C语言的代码大小或性能优势,这些语言不是惯用语言,也不能用其他语言表达。 同样,大多数这些最终都与在原地处理数据而不是通过中间数据结构移动或将其包装在抽象容器中有关。

如果你没有这样的需求或甚至不知道它们是什么意思,你可能会考虑是否应该真的使用C.带来低效的习语,如字符串连接,抽象容器类或懒惰的内存管理与你从其他语言到C将否定使用C的大部分/全部可能的好处,同时为您提供很少或没有高级语言的好处。

不用担心指针是非常棘手的,因为有人必须最终清理混乱,而且当东西超出范围时,C既没有垃圾收集器也没有析构函数。

  • Apache Portable Runtime(APR)通过使用内存池使某些形式的内存管理更容易。 这样你就可以同时释放一堆物体。 APR提供了自己的一组基于池的字符串例程 ,但这些字符串仍然作为char*处理,所以你不能真正避免这里的指针。 您当然可以使用typedef char* string并使用该名称。
  • 您还可以获得C的垃圾收集器 ,这将更加关注内存管理。 这个库本身只会提供一个垃圾收集器。 我知道没有高级C库可以使用它并提供字符串操作和类似的操作。

您可能想问自己的一个重要问题:如果您打算使用其他语言(如C ++)提供的功能,您为什么要坚持使用C? 也许您的需求也可以通过一些混合语言编程来满足,您可以使用C ++编写应用程序的一部分,并使用C语言保留现有代码,或使用C调用约定进行库调用。 这样,您可以在高级别编写新代码,并在适当的地方使用旧的C代码。

没有人因为你正在使用C ++而强迫你使用特定的编码风格。 编写一个主要看起来像C程序的程序并且仍然使用C ++的功能和数据类型是完全可以的。 您不必自己编写面向对象的东西,在标准命令式范例中 ,您可以坚持使用简单的函数相互调用。 但是,知道你可以在那些有助于使你的代码更容易编写,阅读和维护的情况下使用对象仍然很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM