Пожалуйста, не используйте libio в качестве примера для чего-либо. Этот код был написан в середине 90-х годов с намерением поделиться им с библиотекой времени выполнения C ++ (libstdc ++). В результате код написан в странном стиле, в основном ручной перевод классов C ++ streambuf
. Мы теперь застряли с ним по причинам совместимости с ABI, чтобы люди могли запускать свое действительно, действительно старое программное обеспечение на C ++ (и они все еще делают).
Печальная часть состоит в том, что C ++ ABI перешел на с тех пор несколько раз изменялся несовместимым образом, прежде чем окончательно оседать на C ++ Itanium ABI (который по-прежнему несовместим с тем, что мы имеем в glibc).