Мои библиотеки единственного заголовка для C/C ++.
| библиотека | Самая самая версия | категория | Лок | лицензия | описание |
|---|---|---|---|---|---|
| json.h | 1,00 | анализатор | 848 | Злиб | Неотдавляющий диапазон JSON |
| sched.h | 1,00 | многопоточный | 699 | Злиб | Планировщик многопоточных задач |
| web.h | 1,00 | сеть | 1455 | BSD | Легкий веб -сервер |
| Sdefl.h | 1,00 | сжатие | 525 | общественный достояние | дефлятный компрессор |
| sinfl.h | 1,00 | декомпрессия | 320 | общественный достояние | Дефлятный декомпрессор |
Общее количество библиотек: 5
Общее количество строк C кода: 4487
У Windows нет стандартных каталогов, где живут библиотеки. Это делает развертывающие библиотеки в Windows намного более болезненными, чем разработчики с открытым исходным кодом, в целом, в целом осознают. (Это также делает библиотечные зависимости намного хуже в Windows.)
В Windows также есть общая проблема, где была построена библиотека против другой версии библиотеки времени выполнения, которая вызывает конфликты и путаницу ссылки. Доставка LIBS в качестве заголовков означает, что вы обычно просто собираете их прямо в свой проект, не создавая библиотеки, тем самым обойдя эту проблему.
Создание их единого файла позволяет просто просто бросить их в проект, который нуждается в них. (Конечно, вы все равно можете поместить их в надлежащее общее дерево библиотеки, если хотите.)
Почему не два файла, один заголовок и один реализация? Разница между 10 файлами и 9 файлами не имеет большого значения, но разница между 2 файлами и 1 файлом имеет большое значение. Вам не нужно застегнуть или застегнуть файлы, вам не нужно помнить, чтобы прикрепить два файла и т. Д.
Каждый файл имеет документацию, базовое описание USSAGE и примеры в верхней части файла. Кроме того, каждая функция API, переменные struct и членов также задокументированы. Наконец, каждая библиотека имеет соответствующий тестовый файл внутри справочного каталога для дополнительных рабочих примеров.
Лично я в основном использую C вместо C ++, и, поскольку я хочу поддерживать как C, так и C ++, а C ++ не используется из CI, поэтому сосредоточиться на C.
Я использую C89 вместо C99/C11 для его переносимости между различными компиляторами и доступа к другим языкам.