Glib基础——版本信息

概述

GLib提供了版本信息,主要用在配置文件中对版本信息的检查,一般不使用在具体应用中。GLib的版本号格式为major.minor.micro,分别表示主版本号、副版本号、微版本号,越靠后更新频率越快,比如2.72.1。

版本检查

版本检查主要分为编译时compile time、运行时run time检查。如果程序中使用了已经被弃用的 API,将引发警告。

GLIB_CHECK_VERSION() 编译时检查

GLIB_CHECK_VERSION()只对版本号进行检查,检查指定版本号是否比编译的版本号新。兼容时返回TRUE,否则为FALSE

#define             GLIB_CHECK_VERSION(major,minor,micro)

比如,在glib2.32之后才有g_mutex_clear,之前只能使用g_static_mutex_free

void queue_cleanup(Tasyncqueue *queue) {
    if (queue->lockmutex)
#if GLIB_CHECK_VERSION(2, 32, 0)
        g_mutex_clear(&queue->mutex);
#else
        g_static_mutex_free(&queue->mutex);
#endif
}

glib_check_version() 运行时检查

glib_check_version() 用于检查当前运行使用的库是否与指定版本兼容,兼容时返回NULL,不兼容则返回相关信息。检查包括两个方面:一是运行的库版本号要比指定的版本号要新,二是运行库要比指定的版本号库二进制兼容。

const gchar *
glib_check_version (guint required_major,
                    guint required_minor,
                    guint required_micro);

假设当前版本号为2.72.1,示例:

#include <glib.h>
extern const guint glib_major_version, glib_minor_version, glib_micro_version;

int main(int argc, char const *argv[]) {
    g_print("runtime version = %d.%d.%d\n", glib_major_version, glib_minor_version, glib_micro_version);
    g_print("compile version = %d.%d.%d\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
    
    const gchar *result;
    result = glib_check_version(2, 71, 0);
    g_print("%s\n", result);
    result = glib_check_version(2, 73, 0);
    g_print("%s\n", result);

    if (GLIB_CHECK_VERSION(2, 71, 0)) {
        g_print("glib version is 2.71 or later\n");
    }
    if (GLIB_CHECK_VERSION(2, 73, 0)) {
        g_print("glib version is 3.36 or later\n");
    }
    return 0;
}

// 输出:
runtime version = 2.72.1
compile version = 2.72.1
(null)
GLib version too old (micro mismatch)
glib version is 2.71 or later

边界检查

获取当前、上一个稳定版版号,使用GLIB_VERSION_CUR_STABLE
GLIB_VERSION_PREV_STABLE。
如果想对最低、最高版本进行限制,可以定义相应宏GLIB_VERSION_MIN_REQUIRED、GLIB_VERSION_MAX_ALLOWED。

忽略版本检查

如果想忽略对版本警告,可以通过定义宏GLIB_DISABLE_DEPRECATION_WARNINGS,且要放在导入 glib.h
库文件头之前。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值