31

Just because I'm curious--is there any C analog to the functionality of the STL in C++? I've seen mention of a GTK+ library called glib that a few people consider fills the bill but are there other libraries that would provide STL functionality in C?

3
  • 1
    Why? 99% of the time you can convert well written C code to C++ code by just changing the compiler setting. Why not start using C++ code? Commented Oct 14, 2008 at 15:42
  • @davr, I am using C++ code. I was just curious about the possibility of something like the STL (and its data structures) in C. I keep telling people using C++ to stop using arrays--use <vector> instead. So I was curious if there were something safer in C. Commented Oct 14, 2008 at 17:08
  • 5
    @davr This question is quite useful for people who write code for embedded systems that only offer C compilers. If we can do C++ style programming in C, we can have C++ functionality on a huge variety of embedded processors. Commented May 21, 2012 at 0:18

4 Answers 4

28

Yes, glib is a pretty good choice: it includes a lot of utilities for manipulating containers like linked lists, arrays, hash tables, etc. And there is also an object-oriented framework called GObject that you can use to make objects with signals and slots in C (albeit with rather verbose function call names like gobject_set_property, since C doesn't have any syntax for objects). And there is also code for main loops so you can write event-driven programs.

For more info see wikipedia: https://en.wikipedia.org/wiki/GLib

Glib was originally part of GTK, but the non-GUI code has been completely factored out so that you can use it in command-line programs: http://library.gnome.org/devel/glib/stable/

Sign up to request clarification or add additional context in comments.

Comments

4

CLIB

Comments

3

Adding another option (full disclosure, I am the author); if you can compile and link C++, you can have a look into libcdada, which has a pure C API, but uses libstdc++ as a backend for most of the containers:

https://github.com/msune/libcdada

Comments

2

Well since STL's very nature is based on templates which C doesn't have, it would be difficult to even come close to the STL in C. The best you could hope for is some collection classes which manipulate void* pointers to unknown object.

9 Comments

STL is more than just a container library.
I'm aware that STL is more than a container library, which is why I said "The best you could hope for"
@Onorio: Templates are at the very essence of the STL. Your question is much like say "I need something like an airplane, but don't worry about the flying part"
@James Curran: So maybe he's looking for a car, bus, train or boat.
@James Curran: Am I mistaken in thinking that there were STL-like structures in C# before the introduction of generics into that language? What about Java--didn't that have data structures analogous to STL before they added generics to that language? Why would a C STL be such a conceptual stretch?
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.