Вместо использования стандартных типов C (int, long
и т.д.) glib определяет свои собственные. Это сделано по многим
причинам. Например, тип gint32 гарантированно имеет
размер 32 бита, чего не может дать любой стандартный тип C.
guint просто легче набирать, чем unsigned.
Некоторые определения типов существуют просто для целостности; например,
gchar всегда эквивалентен стандартному char.
В glib определены следующие примитивные типы:
gint8, guint8, gint16, guint16, gint32, guint32, gint64,
guint64 -- они дают вам целые числа гарантированного размера. Не все
платформы обеспечивают 64-битные целые числа; если платформа их поддерживает,
то glib определит константу "G_HAVE_GINT64".
(Если это неочевидно, типы guint беззнаковые, а
gint -- знаковые.)
gboolean полезен для того, чтобы ваш код был
более понятным, так как C не имеет типа bool.
gchar, gshort, glong, gint, gfloat, gdouble --
чисто косметические.
gpointer может быть более удобным, чем
void *. gconstpointer заменяет
const void *. (const gpointerне даст вам того, что вы хотите; почитайте на досуге хорошую книгу
по C, если вы не понимаете, почему.)