2011-01-06 7 views
5

Powiel możliwe:
Container Class/Library for CCzy istnieje standardowa i powszechnie używana biblioteka dla C (C99 lub innego), ponieważ STL jest dla C++?

Spodziewam się, że będę zmuszony do korzystania wektorów, listy i zestawów do mojego programu C. Czy powinienem wymyślać te obiekty od zera, czy istnieje jakaś standardowa biblioteka dla C, ponieważ STL jest dla C++?

+2

zduplikowane pytanie patrz na przykład: http://stackoverflow.com/questions/305611/container-class-library-for-c – quinmars

+1

zobacz GLib: http://library.gnome.org/devel/glib /stable/glib-data-types.html – Christoph

+0

Jeśli chcesz używać abstrakcyjnych wektorów, list i zestawów, powinieneś pisać C++, a nie C. Skopiowanie idiomów języka wyższego poziomu na C pokona jakąkolwiek przewagę C ma i będzie skutkować znacznie brzydszym kodem, niż na początku, po napisaniu go w języku wyższego poziomu. Zobacz świetny przykład dowolnego kodu 'glib' /' gtk'. –

Odpowiedz

1

Możesz spojrzeć na APR lub GLib. Są to szeroko stosowane przenośne biblioteki C z wszystkim, czego nie potrzebujesz na nowo odkrywać koła za każdym razem.

1

Istnieje standard c library, ale nie ma żadnej obsługi wbudowanych typów kontenerów, takich jak te, które wymieniasz.

+0

Tak, ale C99 ma kilka wbudowanych funkcji w swoim nowym typie tablicy, nie? – Mordachai

2

C nie ma szablonów, więc może być trudno zaimplementować te kolekcje C++ w sposób ogólny. Nie jestem świadomy żadnych bibliotek, które implementują te funkcje w C.

Gdybym miał do czynienia z taką sytuacją, moją pierwszą myślą byłoby wyizolowanie części z mojego programu, który skorzystałby z funkcji C++, zapisz je w C++, następnie udostępnij interfejs i extern "C", aby można było je wywołać z czystych części C programu. Czy to dla ciebie opcja?

Powiązane problemy