【问题标题】:C Analog To STLC 模拟转 STL
【发布时间】:2008-10-14 14:33:55
【问题描述】:

只是因为我很好奇——是否有任何 C 语言类似于 C++ 中 STL 的功能?我看到有人提到了一个名为 glib 的 GTK+ 库,一些人认为它可以满足要求,但是还有其他库可以在 C 中提供 STL 功能吗?

【问题讨论】:

  • 为什么? 99% 的情况下,您只需更改编译器设置即可将编写良好的 C 代码转换为 C++ 代码。为什么不开始使用 C++ 代码?
  • @davr,我正在使用 C++ 代码。我只是对 C 中的 STL(及其数据结构)之类的东西的可能性感到好奇。我一直告诉使用 C++ 的人停止使用数组——改用 。所以我很好奇 C 中是否有更安全的东西。
  • @davr 这个问题对于为只提供 C 编译器的嵌入式系统编写代码的人非常有用。如果我们可以在 C 中进行 C++ 风格的编程,我们就可以在各种各样的嵌入式处理器上使用 C++ 功能。

标签: c stl


【解决方案1】:

是的,glib 是一个不错的选择:它包含许多用于操作容器的实用程序,如链表、数组、哈希表等。还有一个名为 GObject 的面向对象框架,您可以用于在 C 中创建带有信号和槽的对象(尽管函数调用名称相当冗长,例如 gobject_set_property,因为 C 没有任何对象语法)。还有主循环的代码,所以你可以编写事件驱动的程序。

更多信息参见维基百科:https://en.wikipedia.org/wiki/GLib

Glib 最初是 GTK 的一部分,但非 GUI 代码已被完全分解,以便您可以在命令行程序中使用它:http://library.gnome.org/devel/glib/stable/

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      添加另一个选项(完全公开,我是作者);如果你可以编译和链接 C++,你可以看看 libcdada,它有一个纯 C API,但使用 libstdc++ 作为大多数容器的后端:

      https://github.com/msune/libcdada

      【讨论】:

        【解决方案4】:

        好吧,由于 STL 的本质是基于 C 没有的模板,因此甚至很难接近 C 中的 STL。最好的希望是一些集合类可以操纵指向未知的 void* 指针对象。

        【讨论】:

        • STL 不仅仅是一个容器库。
        • 我知道 STL 不仅仅是一个容器库,这就是为什么我说“你可以期待的最好的”
        • @Onorio:模板是 STL 的精髓。你的问题很像说“我需要飞机之类的东西,但不要担心飞行部分”
        • @James Curran:所以也许他正在寻找汽车、公共汽车、火车或船。
        • @James Curran:在将泛型引入该语言之前,我是否认为 C# 中存在类似 STL 的结构? Java 呢?在向该语言添加泛型之前,它没有类似于 STL 的数据结构吗?为什么 C STL 会是这样一个概念延伸?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-02
        • 1970-01-01
        • 2017-03-04
        • 1970-01-01
        • 2014-04-03
        • 1970-01-01
        相关资源
        最近更新 更多