使用 glib typedefs(gint 等)的目的是什么?

What is the purpose of using glib typedefs (gint etc)?

编辑: 我特别询问非固定大小类型,而不是固定大小类型。如前所述,我了解使用它们的(历史)目的。

在我当前的代码库中,我经常看到 gint、guint、gboolean、gpointer 等 Glib 类型

查看头文件,它们只是标准 C 类型的新名称:

typedef char   gchar;
typedef short  gshort;
typedef long   glong;
typedef int    gint;
typedef gint   gboolean;
typedef void* gpointer;

使用这些 typedef 的目的是什么?在我看来,我们只是在隐藏信息,尤其是在类型定义为非指针签名的 gpointer 的情况下。还有 gboolean,它用于代替 C99 中的 C 标准布尔值(_Bool 被定义为单字节类型,而不是 int,例如 AMD64 Sys V ABI 和 ARMv7 ABI)。

我理解在 stdint 之前固定宽度 typedef 的目的,也许在 stdbool 之前还有 gboolean,但是有没有在 2015 年使用这些类型的真正好处?

引入它们只是为了保持一致性,没有理由使用它们。请参阅来自 Havoc Pennington(DBus 和 GNOME 开发人员)的 this comment