【问题标题】:What is the purpose of using glib typedefs (gint etc)?使用 glib typedefs(gint 等)的目的是什么?
【发布时间】:2015-08-10 18:36:25
【问题描述】:

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

在我当前的代码库中,我通常会看到 Glib 类型,例如 gint、guint、gboolean、gpointer 等。

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

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

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

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

【问题讨论】:

标签: c glib


【解决方案1】:

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

【讨论】:

  • 谢谢,我怀疑是这种情况,但想检查一下我是否遗漏了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
  • 2011-01-15
  • 2016-04-28
  • 2016-09-18
  • 2012-07-03
相关资源
最近更新 更多