2008-10-14 15 views
31

Sadece merak ettiğim için - C++ 'da STL'nin işlevselliğine ilişkin herhangi bir C analogu var mı? Birkaç kişinin faturası doldurmayı düşündüğü glib adlı bir GTK+ kütüphanesinden bahsetmiştim, fakat C içinde STL işlevselliği sağlayacak başka kütüphaneler var mı?C Analog To STL

+1

Neden? Zamanın% 99'unu, derleyici ayarını değiştirerek iyi yazılmış C kodunu C++ koduna dönüştürebilirsiniz. Neden C++ kodunu kullanmaya başlamıyorsunuz? – davr

+0

@davr, C++ kodu kullanıyorum. Ben sadece STL (ve onun veri yapıları) C gibi bir şey olasılığını merak ediyordum. C++ kullanarak dizileri kullanmayı durdurmak için söylüyorum - yerine kullanın. C. –

+5

@davr Daha güvenli bir şey olsaydı merak ettim. Bu soru, sadece C derleyicileri sunan gömülü sistemler için kod yazan kişiler için oldukça kullanışlıdır. C++ stili programlamayı C içinde yapabilirsek, çok çeşitli gömülü işlemcilerde C++ işlevine sahip olabiliriz. – solvingPuzzles

cevap

28

Evet, glib oldukça iyi bir seçimdir: Bağlantılı listeler, diziler, karma tablolar vb. Gibi kapsayıcıları işlemek için birçok yardımcı program içerir. Ayrıca, GObject adlı nesneyi kullanan bir çerçeve de vardır. C cinsinden sinyaller ve yuvalar içeren nesneler (C, gobject_set_property gibi oldukça ayrıntılı işlev çağrısı olsa da, C nesneleri için herhangi bir sözdizimi yoktur). Ayrıca, ana döngüler için kod da vardır, böylece olay odaklı programlar yazabilirsiniz. wikipedia

diğer bilgiler: http://en.wikipedia.org/wiki/Glib

Glib aslen GTK bir parçasıydı, ancak komut satırı programlarında kullanabilirsiniz böylece olmayan GUI kod tamamen dışarı çarpanlarına: http://library.gnome.org/devel/glib/stable/

+9

Omg, Ben C .. seviyorum –

2

STL'nin niteliği, C'nin sahip olmadığı şablonlara dayandığından beri, STL'ye C'ye yaklaşmak bile zor olacaktır. Bunun için en iyi ihtimalle, void * işaretlerini kullanan bazı koleksiyon sınıflarıdır. bilinmeyen nesne.

+0

@James Curran, STL'ye bir _analog_ istiyordum. Şablonların bir C++ özelliği olduğunu anlıyorum. –

+2

STL, yalnızca bir kapsayıcı kitaplığından daha fazlasıdır. –

+1

STL'nin bir kapsayıcı kitaplıktan daha fazlası olduğunun farkındayım, bu yüzden "En iyi ihtimalle ümit edebileceğin en iyisi" –