在GTK + 2.0教程中,我可以阅读here关于数据类型的以下陈述:
在前面的例子中你可能会注意到一些需要解释的事情。您看到的gint,gchar等分别是int和char的typedef,它们是GLib系统的一部分。 这样做是为了在计算时绕过对简单数据类型大小的讨厌依赖。
我不明白这个解释的最后部分。为什么使用Glib数据类型会更好?
答案 0 :(得分:9)
正如教程所提到的,这是为了确保可移植性。构建在新系统上使用glib的代码时,您只需要使用typedef修改头文件,而不是使用这些类型的代码。
C99标准添加了固定宽度类型(int8_t,uint32_t等),这会使glib类型过时,但glib早于C99标准,这可能是它拥有自己的类型集的原因。
答案 1 :(得分:3)
C数据类型是高度平台和特定于实现的 例如int是寄存器的大小, char有一个字节有多少位, long只表示不小于int short int至少为2个字节,但实际上不需要小于int
因此,使用一些简短的正确命名变量有利于可移植性。
正如GTK 2.0教程所说:
一个很好的例子是“gint32”,对于任何给定的平台,无论是64位alpha还是32位i386,它都将被设置为32位整数。 typedef非常简单直观。它们都是在glib / glib.h中定义的(从gtk.h中包含它们)。
编辑:正如迈克尔所说,C99标准通过提供新类型使它们过时