1 GError结构体

typedef struct _GError GError;

struct _GError
{
  GQuark       domain;
  gint         code;
  gchar       *message;
};

2 GError相关函数

  1. GError 没有在类型系统注册对象,自定义结构体也没有引用计数。

2.1 GError创建函数

/**
 * @brief: 创建一个具有给定 @domain 和 @code 的新 #GError,并使用 @format 格式化的消息。
 * @domain: error 属于哪一种类 (比如:"g-file-error-quark")
 * @code: error code (错误的类型代码,比如:G_FILE_ERROR_NOENT)
 * @format: printf()格式风格的字符串消息
 * @returns: 新创建的 #GError
 */
GError*
g_error_new (GQuark       domain,
             gint         code,
             const gchar *format,
             ...)

/**
 * @brief: 与g_error_new的区别就是,使用的是字符串常量
*/
GError*  
g_error_new_literal   (GQuark         domain,
                       gint           code,
                       const gchar   *message);

2.2 GError内存释放函数

/* 因为没有引用计数,通过该函数会调用g_free释放所有给GError分配的内存 */
void
g_error_free (GError *error)

/**
 * @param err(out): 二级指针做输出,释放 *err 指向内存,并且赋值为NULL
*/
void
g_clear_error (GError **err)
{
  if (err && *err)
    {
      g_error_free (*err);
      *err = NULL;
    }
}