Почему GLib переопределяет типы?

В чем причина переопределения типов в GLib? Почему они превращают char в gchar , int gchar и т. Д.?

Ознакомьтесь с базовыми типами в документации GLib. По сути, это гарантировать, что определенные типы будут существовать с определенной семантикой, независимо от того, какой компилятор или платформа C вы используете. Типы, которые C гарантирует, в любом случае, применяются только для того, чтобы все имена типов выглядели однородными.