十、GLib——GError
1 GError结构体
typedef struct _GError GError;
struct _GError
{
GQuark domain;
gint code;
gchar *message;
};
2 GError相关函数
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;
}
}