【问题标题】:Higher Abstraction Lib for C?C 的高级抽象库?
【发布时间】:2012-09-20 05:12:55
【问题描述】:

是否有任何更高的 C 抽象库可以帮助您轻松完成基本工作,而无需真正担心内存/指针/等。

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

【问题讨论】:

  • 是的,它叫libobjc...
  • 是的,它被称为 C++。 (哦等等……)
  • @nneonneo C++ 是关于在 OOD 中做事的。我说的是C 本身,但让我们不必担心基本的东西。
  • in this question 的一些建议可能会有所帮助。

标签: c


【解决方案1】:

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

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

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

如果您没有这样的需求,或者甚至不知道它们的含义,您可能会考虑是否真的应该使用 C。带上诸如字符串连接、抽象容器类或惰性内存管理之类的低效习惯用法C 的其他语言将否定使用 C 的大部分/所有可能的好处,同时为您提供很少或没有高级语言的好处。

【讨论】:

    【解决方案2】:

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

    • Apache Portable Runtime (APR) 使用memory pools 使某些形式的内存管理更容易。这样你就可以同时释放一堆对象。 APR 提供了自己的一组基于池的string routines,但是这些字符串仍然作为char* 处理,所以你不能真正避免这里的指针。您当然可以使用 typedef char* string 并改用该名称。
    • 你也可以得到a garbage collector for C,它会更加关心内存管理。这个库本身只会提供一个垃圾收集器,没有别的。我知道没有使用它并提供字符串操作和类似功能的高级 C 库。

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

    没有人会因为您使用 C++ 而强迫您使用特定的编码风格。编写一个看起来很像 C 程序的程序并在需要的地方仍然使用 C++ 的特性和数据类型是完全可以的。您不必自己编写面向对象的东西,您可以坚持使用标准imperative paradigm 中相互调用的简单函数。但是很高兴知道您可以在那些有助于使您的代码更易于编写、阅读和维护的情况下使用对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      相关资源
      最近更新 更多