目录

  • 概述
  • 版本检查
    • GLIB_CHECK_VERSION() 编译时检查
    • glib_check_version() 运行时检查
  • 边界检查
  • 忽略版本检查

概述

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);
#elseg_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
库文件头之前。

Glib基础——版本信息相关推荐

  1. Linux基础(1)- 版本信息与基础命令

    RH124 笔记 Linux基础(1)- 版本信息与基础命令 Linux基础 Linux发行版本(Linux distributions) 终端(Terminal) 终端选项(options/flag ...

  2. 远程主机http协议版本信息泄漏_Web基础之http协议

    Http协议介绍 HTTP 全称:Hyper Text Transfer Protocol 中文名:超文本传输协议 什么是超文本 包含有超链接(Link)和各种多媒体元素标记(Markup)的文本. ...

  3. 为Tiny4412设备驱动在proc目录下添加一个可读版本信息的文件

    http://blog.csdn.net/morixinguan/article/details/77808088 上节,我们明白了proc文件系统的作用,接下来我们在友善之臂已经写好的led驱动的基 ...

  4. Spring Boot中使用Actuator的/info端点输出Git版本信息

    对于Spring Boot的Actuator模块相信大家已经不陌生了,尤其对于其中的/health./metrics等强大端点已经不陌生(如您还不了解Actuator模块,建议先阅读<Sprin ...

  5. coap 返回版本信息_CoAP 协议解析说明(转)

    CoAP 协议全面分析 HTTP与COAP 请求与响应示例 HTTP请求(文本格式) POST https://getman.cn/echo HTTP/1.1 User-Agent: Fiddler ...

  6. win7 查看php版本信息,window_Windows系统版本怎么看?2种查看windows版本的方法介绍,前段时间微软正式开始向Win7和 - phpStudy...

    Windows系统版本怎么看?2种查看windows版本的方法介绍 前段时间微软正式开始向Win7和Win8用户推送免费Win10更新提示,不过很多电脑用户表示没有收到,这主要由于目前Win10推送主 ...

  7. 小程序基础版本库与微信版本关系

    小程序有基本版本库的概念,有些api在低版本基础库用不了,那么小程序运行在手机时,基础版本库跟微信版本有什么关系么,来看对比不同微信版本时的结果. 真机调用 wx.getSystemInfo({suc ...

  8. Windows提权基础:信息收集技巧及可用漏洞搜索

    本文收集整理一些跟提权紧密相关的信息收集技巧和方法,以及如何在kali中搜索可用的漏洞,最后整理了目前可供使用的一些漏洞对应msf下的模块以及操作系统可提权的版本. 0X00 Windows提权信息收 ...

  9. html文本通常由版本信息组成,第 2 章 网页版面设计.ppt

    3. 插入水平线 4. 插入特殊字符 (1)通过菜单插入.先将光标放置到需要插入特殊字符的位置,在"HTML"/"特殊字符"的级联菜单中选择需要插入的特殊字符. ...

最新文章

  1. Java项目:财务预算管理系统(java+SSM+Jsp+Mysql+Layui+Maven)
  2. 关于Unity中的刚体和碰撞器的相关用法(一)
  3. ANT 运行jar包的中文乱码问题
  4. c语言输入的成绩由高到低该怎么,输入成绩,按照平均分从高到低输出
  5. ZKEACMS for .Net Core 深度解析
  6. 修改Yarn的全局安装和缓存位置
  7. 鸿蒙系统 第4节 Hi3861 WiFi操作,热点连接
  8. 检测到非法调试,F12被管理员禁用解决方法
  9. spawn xelatex ENOENT的问题
  10. 阿铭Linux_传统IDC 部署网站学习笔记20190218
  11. 微信小程序中输出大于号和小于号
  12. 网络共享里的计算机无法打开,局域网共享文件夹打不开怎么办
  13. 美国临床营养专家:冬季营养建议
  14. 利用陀螺仪实现更真实的微信摇一摇动画
  15. fect:基于面板数据的因果推断(下)
  16. JAVASE相关知识点
  17. DSPE-PEG-Biotin,CAS:385437-57-0,磷脂-聚乙二醇-生物素可延长循环半衰期
  18. SSD的使用寿命一般有多久
  19. 联想Filez助力实地集团信息化构建,重塑地产行业新未来
  20. 文献管理软件citavi(西塔维)安装教程

热门文章

  1. 再探Direct3D流水线
  2. linux C-kermit 安装使用
  3. 深度学习图像算法在内容安全领域的应用
  4. STM32F4内的FLASH和RAM
  5. 解决Anaconda无法添加环境变量问题,适用于Linux的大多数发行版本。
  6. 租车汽车租赁系统开发
  7. revit模型怎么在手机上看_e建筑手机版下载-e建筑(轻松查看CAD图纸和BIM模型)1.2.4 官方苹果版-东坡下载...
  8. 大班运用计算机教学案例,【大班教学案例】_幼儿园大班教学案例:《让孩子在自主探索中获取成功》...
  9. 鸿蒙系统学习系列 | 上手HarmonyOS十大必看指南!
  10. 浅谈/proc/net/dev的由来