У меня есть пара хобби-проектов программирования на языке C, которые я хотел бы начать. Я ищу библиотеку с открытым исходным кодом, у которой есть либеральная лицензия (я хочу получить кредит, но практически любой может использовать). Библиотека должна иметь строки лучше, чем стандартная библиотека C и некоторые переносимые примитивы потоковой передачи.
Я рассматриваю GLib и Годовая процентная ставка. Какой у вас практический опыт? Какая базовая библиотека C лучше? Есть ли другие библиотеки, занимающие ту же нишу?
Я бы пошел с APR. APR лучше переносит Unix / Windows (будучи специализированной библиотекой переносимости), GLib традиционно более ориентирован на Unix. APR - это более крупная библиотека, чем GLib, в ней много полезного (хеш-таблицы, парсинг аргументов, файловый ввод-вывод, управление памятью, процедуры с общей памятью, обработка сигналов и т. д.).
Итак, каково это сегодня? Что больше? И действителен ли этот ответ?
Материал libapr намного меньше, чем материал glib / gtk. В этом нет сомнений ..
Я думаю, что glib в целом превосходит апр. glib имеет гораздо больше структур данных в виде переносимых библиотек. например, хеш-таблицы, всевозможные списки, очереди, стеки, динамический массив, а также для синтаксического анализа аргументов, файл io также имеет свои собственные оболочки, а управление памятью легко модифицируется. Например, вы можете легко заставить glib использовать Boehm Weisser GC, это AFAIKT никогда не было сделано или легко возможно с Apache. Я бы решил немного иначе. Если вам нужна более полезная библиотека структур данных, лучше подойдет glib. Если говорить о графическом интерфейсе, то в libapr нет ничего, в то время как в glib есть gdk / gtk + и много чего еще для gnome, если хотите.
Однако, если речь идет о сетевых вещах, libapr определенно имеет преимущество перед glib.
Итак, мои предложения
Есть ли причина, по которой вы не хотели бы использовать C++ stl? Даже если вы пишете код в стиле «c» без классов, вы можете использовать строки и структуру данных C++.
Конечно, есть много веских причин придерживаться C. Если это так, я бы поддержал рекомендацию для glib. APR - это скорее уровень переносимости, чем служебная библиотека.
Говоря о строках C++, я бы порекомендовал вам прочитать, что Линус сказал по этому поводу: thread.gmane.org/gmane.comp.version-control.git/57918
Да, я согласен, что Линус сделал правильный выбор, выбрав для git чистый C. Используйте то, что подходит вашему проекту и целевой аудитории разработчиков. Строки C++ хороши, особенно для программиста-любителя, как указано на плакате, потому что вам не нужно отслеживать владение и выяснять, когда их освободить (), а автоматическое увеличение делает это, так что вам не нужно беспокоиться о сложных случаях strcat. Конечно, как я уже сказал, «есть много веских причин придерживаться C ...». Используйте то, что работает для вас.
Вопрос был конкретно о кодировании на C, поэтому C++ STL не имеет отношения. (Да, я знаю, что этот комментарий сделан через 5 лет после того, как факт. Парень, эти вопросы и ответы наверняка продолжаются, не так ли?)
Кстати, теперь glib включает gio, который представляет собой переносимый ввод-вывод с потоковой архитектурой. Я бы не подумал, что апр вообще что-то больше, чем бойкий.