2011-01-06 6 views
5

Eventuali duplicati:
Container Class/Library for CEsiste una libreria standardizzata e comunemente utilizzata per C (C99 o qualsiasi altra cosa), poiché STL è per C++?

mi aspetto sarei costretto ad utilizzare vettori, liste e set per il mio programma C. Devo inventare queste entità da zero, o esiste una specie di libreria standard per C come STL è per C++?

+2

domanda duplicata vedere ad esempio: http://stackoverflow.com/questions/305611/container-class-library-for-c – quinmars

+1

dare un'occhiata a GLib: http://library.gnome.org/devel/glib /stable/glib-data-types.html – Christoph

+0

Se si desidera utilizzare vettori, elenchi e set astratti, è probabile che si stia scrivendo C++, non C. Copiando gli idiomi di un linguaggio di livello superiore su C si vanificherà qualsiasi vantaggio C ha e risulterà in un codice molto più brutto rispetto a se lo hai appena scritto nella lingua di livello superiore per cominciare. Vedi un codice 'glib' /' gtk' per un grande esempio di questo. –

risposta

1

È possibile guardare APR o GLib. Quelle sono librerie C portatili ampiamente utilizzate con tutto il necessario per non reinventare la ruota ogni volta.

1

C'è un standard c library, ma non ha alcun supporto per i tipi di contenitori incorporati come quelli elencati.

+0

Sì, ma C99 ha alcune funzionalità incorporate nel loro nuovo tipo di array, no? – Mordachai

2

C non ha modelli, quindi potrebbe essere difficile implementare tali raccolte C++ in modo generico. Non sono a conoscenza di librerie che implementano tali funzionalità in C.

Se mi trovassi di fronte a una situazione del genere, il mio primo pensiero sarebbe isolare le parti del mio programma che trarrebbero vantaggio dalle funzionalità di C++, scriverle in C++, quindi fornire un'interfaccia extern "C" a quei moduli in modo che possano essere chiamati dalle pure parti C del programma. È un'opzione per te?

Problemi correlati