C Analog zu STL

Lesezeit: 2 Minuten

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?

  • 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

Benutzer-Avatar
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/

Benutzer-Avatar
Avinash

CLIB

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 libcdadadie eine reine C-API hat, aber verwendet libstdc++ als Backend für die meisten Container:

https://github.com/msune/libcdada

Benutzer-Avatar
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.

1376200cookie-checkC Analog zu STL

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy