当前位置: 首页 > news >正文

一种libc库线程安全函数的封装

前言:

        libc库线程安全函数的易用性封装。

问题:

        libc有如下两个时间相关函数 :   

char *asctime(const struct tm *ptm) char *asctime_r(const struct tm *ptm,  char *buffer)

        其中asctime是非线程安全函数(MT-Unsafe),但是用起来简单方便,一条语句就可以搞定,如

printf("%s", asctime(&tm)); //or strcpy(dst, asctime(&tm));

        而使用asctime_r则需要额外定义一个变量,用起来差那么点意思

char tmpbuf[64] = {0}; printf("%s", asctime_r(&tm, tmpbuf)); //or strcpy(dst, asctime_r(&tm, tmpbuf));

那么有没有一种函数接口设计可以保持asctime_r的安全特性又可以保留asctime的易用性

方案:

这种函数接口需要解决两个小问题

1、需要有返回值

由于asctime_r是系统libc函数,应用开发过程中肯定是不能对其进行修改的,因此引入带返回值的宏来实现

#define myprefix_asctime(tp) \ ({ \ tmpbuf \ asctime_r(tp, tmpbuf); \ tmpbuf \ })

但返回值宏其他使用示例参见 

http://www.jsqmd.com/news/230943/

相关文章:

  • 魔兽争霸III现代化兼容性全面解决方案
  • 如何用FSearch实现Linux文件秒级定位:完整操作手册
  • 通信原理篇---2PSK的功率谱密度
  • 移动应用开发:跨平台自动适配
  • 抖音内容珍藏指南:用专业工具实现高效下载管理
  • Windows右键菜单管理终极指南:如何用ContextMenuManager打造高效桌面环境
  • QMK Toolbox:键盘固件刷写的全能解决方案
  • 电话号码定位技术实战:从查询到地图展示的完整解决方案
  • 抖音内容高效获取:douyin-downloader完整使用攻略
  • 魔兽争霸III现代化重生:告别兼容性问题,重拾竞技激情
  • NeverSink过滤器终极配置指南:5分钟掌握流放之路2物品筛选技巧
  • pytest的学习过程
  • 抖音下载神器:5分钟快速上手,永久保存心仪短视频
  • 如何5分钟彻底清理Windows右键菜单:免费工具一键优化桌面效率
  • Windows右键菜单清理神器:3分钟告别臃肿杂乱,打造高效工作流
  • 终极指南:3个快速解决Modern Fortran扩展配置难题的技巧
  • 电话号码定位完全手册:三分钟掌握精准位置查询技术
  • RVC语音转换WebUI完整使用指南:从安装到精通应用
  • ncmToMp3终极教程:5分钟解锁网易云VIP加密音乐
  • USACO历年黄金组真题解析 | 2020年2月Timeline
  • 如何快速获取百度网盘提取码:技术解析与实用指南
  • Navicat密码解密工具终极使用指南:轻松找回遗忘的数据库连接密码
  • LeagueAkari实战秘籍:英雄联盟辅助工具效率提升完全指南
  • NeverSink过滤器终极配置指南:3步打造流放之路2高效刷图体验
  • 百度网盘提取码智能查询工具:告别资源访问障碍的全新体验
  • USACO历年白银组真题解析 | 2023年2月Bakery
  • LeagueAkari终极指南:英雄联盟辅助工具完整教程
  • 5分钟精通NeverSink过滤器:流放之路2的智能拾取终极配置指南
  • ncmToMp3完整教程:3分钟解锁网易云加密音乐
  • 百度网盘资源解锁大师:秒速获取提取码的终极秘籍