metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2016-04-10 05:03 pm

ANSI C и зависимости

А вот как в сишечьке принято втаскивать сторонние либы в зависимости?

Например, мне нужна структура типа паскалевских строк - т.е. буфер, размер и capacity.
Делать самому - очевидный грех, брать готовое - так у половины сторонних либ самодельные аналоги, а из готового обычно какой-нибудь нечеловеческий трэш вроде GLib, который под винду еще просто так и не соберешь.

[identity profile] berezovsky.livejournal.com 2016-04-10 02:20 pm (UTC)(link)
Ну да, но что поделаешь? Есть куча компиляторов которые умеют только ANSI C. Я на работе каждый день слежу за тем, чтобы код был согласно POSIX-2001. Я вживую в 2016 году в билд энваерменте интеля видел ошибки в GNU awk и GNU Make которые были пофикшены в 2003 и 2007 годах соответственно

Это juick.com/Kim, можешь у него спросить.

[identity profile] rhxca.livejournal.com 2016-04-11 12:00 pm (UTC)(link)
квантовый дурачок Березовский, ты уже поиграл со своей мамой в пирамидки и кубики?

[identity profile] berezovsky.livejournal.com 2016-04-12 11:08 pm (UTC)(link)
Во, он ответил.

А вообще там всё просто. Если нужно реализацию чего-нибудь большого, вроде работы с графикой, с сетью, с базами данных и того подобного, то берутся просто соответствующие либы и подключаются с использованием pkgconfig (или его обёртки из autoconf/cmake/etc). Если нужно чего-то маленьго, вроде хэшей, контейнеров или , то можно либо смотреть на ccan или gnulib на предмет наличия готовой реализации (впрочем иногда даже тут бывают вещи вроде sglib или libav которые можно взять либой, но уже реже) и при отсутствии таковой писать самостоятельно, либо брать монструозные вещи вроде glib.

А вообще если такой вопрос возник, то возможно вы уже вышли из того списка задач для которого C круче всех и стоит взять язык в котором стандартные библиотеки умеют все базовые вещи: плюсы, питон, хаскель, джаваскрипт на ноде и так далее.

Как-то так

Если нужно реализацию чего-нибудь большого, вроде работы с графикой, с сетью, с базами данных и того подобного, то берутся просто соответствующие либы и подключаются с использованием pkgconfig (или его обёртки из autoconf/cmake/etc). Если нужно чего-то маленьго, вроде хэшей, контейнеров или переносимых обёрток на сишные функции, то можно либо смотреть на ccan или gnulib на предмет наличия готовой реализации (впрочем иногда даже тут бывают вещи вроде sglib или libav которые можно взять либой, но уже реже) и при отсутствии таковой писать самостоятельно, либо брать монструозные вещи вроде glib.

А вообще если такой вопрос возник, то возможно вы уже вышли из того списка задач для которого C круче всех и стоит взять язык в котором стандартные библиотеки умеют все базовые вещи: плюсы, питон, хаскель, джаваскрипт на ноде и так далее.

Пофиксил очепятки