为什么使用Glib数据类型更好(例如`gint`而不是`int`)?

时间:2012-12-11 13:21:18

标签: types typedef glib

  

可能重复:
  Why does glib redefine types?

在GTK + 2.0教程中,我可以阅读here关于数据类型的以下陈述:

  

在前面的例子中你可能会注意到一些需要解释的事情。您看到的gint,gchar等分别是int和char的typedef,它们是GLib系统的一部分。 这样做是为了在计算时绕过对简单数据类型大小的讨厌依赖。

我不明白这个解释的最后部分。为什么使用Glib数据类型会更好?

2 个答案:

答案 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标准通过提供新类型使它们过时