版本子系统(CategoryVersion)
用于查询 SDL 版本信息的功能集,可分别获取应用编译时依赖的头文件版本和运行时链接的库文件版本。
函数
- SDL_GetRevision:获取 SDL 库的版本修订号(字符串形式,如 git 提交哈希)
- SDL_GetVersion:获取运行时链接的 SDL 库的版本号(填充 SDL_version 结构体,包含主/次/微版本)
数据类型
- (无)
结构体
- (无)
枚举
- (无)
宏
- SDL_MAJOR_VERSION:提取版本号中的主版本号(如 3.1.2 中的 3)
- SDL_MICRO_VERSION:提取版本号中的微版本号(如 3.1.2 中的 2)
- SDL_MINOR_VERSION:提取版本号中的次版本号(如 3.1.2 中的 1)
- SDL_REVISION:SDL 库的编译时修订号(宏定义,静态值)
- SDL_VERSION:将主/次/微版本号填充到 SDL_version 结构体中(编译时使用)
- SDL_VERSION_ATLEAST:判断当前 SDL 版本是否≥指定版本(如 SDL_VERSION_ATLEAST(3,0,0))
- SDL_VERSIONNUM:将主/次/微版本号合并为一个整数(便于版本比较,格式:主版本1000 + 次版本100 + 微版本)
- SDL_VERSIONNUM_MAJOR:从合并后的版本整数中提取主版本号
- SDL_VERSIONNUM_MICRO:从合并后的版本整数中提取微版本号
- SDL_VERSIONNUM_MINOR:从合并后的版本整数中提取次版本号
FreeBASIC 示例代码
' 引入 SDL 相关声明(需确保 FreeBASIC 已链接 SDL 库)
#Include "SDL.bi"
' 主程序示例
Dim As SDL_version linkedVersion ' 存储运行时链接的 SDL 版本
Dim As ZString Ptr revisionStr ' 存储修订号字符串
' 1. 获取运行时 SDL 库版本
SDL_GetVersion(@linkedVersion)
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "运行时 SDL 版本:%d.%d.%d", _
linkedVersion.major, linkedVersion.minor, linkedVersion.patch)
' 2. 获取 SDL 修订号
revisionStr = SDL_GetRevision()
If (revisionStr <> NULL) Then
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "SDL 修订号:%s", revisionStr)
Else
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "SDL 修订号:未知")
End If
' 3. 编译时版本检查(宏使用)
#If SDL_VERSION_ATLEAST(3, 0, 0) Then
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "编译时依赖 SDL 3.x 及以上版本")
#Else
SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION, "编译时依赖 SDL 版本低于 3.0.0")
#End If
' 4. 版本号数值比较
Dim As UInteger versionNum = SDL_VERSIONNUM(linkedVersion.major, linkedVersion.minor, linkedVersion.patch)
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "版本号数值:%d", versionNum)
' 检查是否满足最低版本要求(如 3.1.0)
If (versionNum >= SDL_VERSIONNUM(3, 1, 0)) Then
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "满足 3.1.0 及以上版本要求")
Else
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "版本过低,至少需要 SDL 3.1.0")
End If
' 5. 提取版本号各部分(宏示例)
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "主版本号:%d", SDL_MAJOR_VERSION(linkedVersion))
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "次版本号:%d", SDL_MINOR_VERSION(linkedVersion))
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "微版本号:%d", SDL_MICRO_VERSION(linkedVersion))
评论一下?