Существуют ли какие-либо широко используемые уровни абстракции потока ввода / вывода для простого C?
Под слоем абстракции потока ввода / вывода я имею в виду любой уровень, который по крайней мере позволяет создавать пользовательские функции чтения / записи.Для C ++ есть стандарт iostream и boost :: iostreams.Для пользователей glibc есть возможность использовать пользовательские потоки.Это не принесет пользы, если требуется написать переносимый код на Си.
Лучше использовать библиотеку, которая либо широко используется, либо ее легко встроить в исходный код, либо и то и другое.
SDL_RWops - недокументированная, но широко используемая функция SDL, и zziplib может использовать ее.Однако не имеет особого смысла добавлять зависимость к SDL только для того, чтобы получить эту функцию.
GLib содержит абстракцию GIOChannel, но библиотека снова довольно велика, и они говорят, что «поддержка Windows только частичноcomplete ".
Однако вышесказанное не совсем удовлетворительно для небольших библиотек, таких как декодеры, устройства чтения форматов файлов и процессоры обработки сигналов: они содержат множество ненужных вещей, а лицензирование LGPL предотвращает встраивание соответствующих частей в неКод GPL.