Nur weil ich neugierig bin – gibt es ein C-Analog zur Funktionalität der STL in C++? Ich habe eine Erwähnung von a gesehen GTK+ Bibliothek namens glib, die einige Leute für ausreichend halten, aber gibt es andere Bibliotheken, die STL-Funktionalität in C bereitstellen würden?
C Analog zu STL
Dan Lenski
Ja, glib
ist eine ziemlich gute Wahl: Es enthält viele Dienstprogramme zum Manipulieren von Containern wie verknüpften Listen, Arrays, Hash-Tabellen usw. Und es gibt auch ein objektorientiertes Framework namens GObject
die Sie verwenden können, um Objekte mit Signalen und Slots in C zu erstellen (allerdings mit ziemlich ausführlichen Funktionsaufrufnamen wie gobject_set_property
, da C keine Syntax für Objekte hat). Und es gibt auch Code für Hauptschleifen, damit Sie ereignisgesteuerte Programme schreiben können.
Weitere Informationen finden Sie auf Wikipedia: https://en.wikipedia.org/wiki/GLib
Glib war ursprünglich Teil von GTK, aber der Nicht-GUI-Code wurde vollständig ausgeklammert, sodass Sie ihn in Befehlszeilenprogrammen verwenden können: http://library.gnome.org/devel/glib/stable/
Avinash
Hinzufügen einer weiteren Option (vollständige Offenlegung, ich bin der Autor); Wenn Sie C++ kompilieren und linken können, können Sie einen Blick darauf werfen libcdada
die eine reine C-API hat, aber verwendet libstdc++
als Backend für die meisten Container:
James Curran
Nun, da die Natur von STL auf Vorlagen basiert, die C nicht hat, wäre es schwierig, der STL in C auch nur nahe zu kommen. Das Beste, worauf Sie hoffen können, sind einige Sammlungsklassen, die void*-Zeiger auf unbekannte Objekte manipulieren.
Wieso den? In 99 % der Fälle können Sie gut geschriebenen C-Code in C++-Code konvertieren, indem Sie einfach die Compiler-Einstellung ändern. Warum nicht anfangen, C++-Code zu verwenden?
– davr
14. Oktober 2008 um 15:42 Uhr
@davr, ich verwende C++-Code. Ich war nur neugierig auf die Möglichkeit von so etwas wie der STL (und ihren Datenstrukturen) in C. Ich sage Leuten, die C++ verwenden, immer wieder, dass sie aufhören sollen, Arrays zu verwenden – verwenden Sie stattdessen. Also war ich neugierig, ob es in C etwas Sichereres gibt.
– Onorio Catenacci
14. Oktober 2008 um 17:08 Uhr
@davr Diese Frage ist sehr nützlich für Leute, die Code für eingebettete Systeme schreiben, die nur C-Compiler anbieten. Wenn wir in C im C++-Stil programmieren können, können wir C++-Funktionalität auf einer Vielzahl von eingebetteten Prozessoren haben.
– Rätsel lösen
21. Mai 2012 um 0:18 Uhr