一种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.mzph.cn/news/1145758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

魔兽争霸III现代化兼容性全面解决方案

魔兽争霸III现代化兼容性全面解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏魔兽争霸III在现代操作系统上运行不畅而困扰吗&a…

如何用FSearch实现Linux文件秒级定位:完整操作手册

如何用FSearch实现Linux文件秒级定位:完整操作手册 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 在日常Linux使用中,你是否经常遇到这样的困…

通信原理篇---2PSK的功率谱密度

第一幕:什么是2PSK?快速回顾2PSK(二进制相移键控) 是相位调制的入门:发送1: 发射载波 Acos(2πf₀t 0)发送0: 发射载波 Acos(2πf₀t 180)关键点:幅度和频率都不变,只变…

移动应用开发:跨平台自动适配

移动应用开发:跨平台自动适配 关键词:移动应用开发、跨平台、自动适配、响应式设计、布局算法 摘要:本文围绕移动应用开发中的跨平台自动适配展开深入探讨。首先介绍了跨平台自动适配在移动应用开发中的背景和重要性,明确了文章的目的、范围以及预期读者。接着详细阐述了核…

抖音内容珍藏指南:用专业工具实现高效下载管理

抖音内容珍藏指南:用专业工具实现高效下载管理 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾在深夜刷抖音时,突然看到一段精彩的舞蹈教学,却因为平台限制无法保…

Windows右键菜单管理终极指南:如何用ContextMenuManager打造高效桌面环境

Windows右键菜单管理终极指南:如何用ContextMenuManager打造高效桌面环境 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager Windows右键菜单是日常文件…

QMK Toolbox:键盘固件刷写的全能解决方案

QMK Toolbox:键盘固件刷写的全能解决方案 【免费下载链接】qmk_toolbox A Toolbox companion for QMK Firmware 项目地址: https://gitcode.com/gh_mirrors/qm/qmk_toolbox 在机械键盘定制领域,固件刷写是解锁键盘全部潜力的关键步骤。QMK Toolbo…

电话号码定位技术实战:从查询到地图展示的完整解决方案

电话号码定位技术实战:从查询到地图展示的完整解决方案 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mir…

抖音内容高效获取:douyin-downloader完整使用攻略

抖音内容高效获取:douyin-downloader完整使用攻略 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在抖音平台遇到精彩内容却无法永久保存的困扰?douyin-downloader正是为你量身打造的…

魔兽争霸III现代化重生:告别兼容性问题,重拾竞技激情

魔兽争霸III现代化重生:告别兼容性问题,重拾竞技激情 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还记得那些通宵达旦…

NeverSink过滤器终极配置指南:5分钟掌握流放之路2物品筛选技巧

NeverSink过滤器终极配置指南:5分钟掌握流放之路2物品筛选技巧 【免费下载链接】NeverSink-Filter-for-PoE2 This is a lootfilter for the game "Path of Exile 2". It adds colors, sounds, map icons, beams to highlight remarkable gear and inform …

pytest的学习过程

本篇章为pytest的学习过程,仅是个人的观点1、unittest和pytest的介绍核心对比内容如下:1、安装与版本管理:unittest:作为 Python 的内置标准库,它无需额外安装,但无法灵活升级或降级pytest:是一…

抖音下载神器:5分钟快速上手,永久保存心仪短视频

抖音下载神器:5分钟快速上手,永久保存心仪短视频 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 还在为抖音上那些精彩视频一闪而过感到遗憾吗?😔 当你看到教学…

如何5分钟彻底清理Windows右键菜单:免费工具一键优化桌面效率

如何5分钟彻底清理Windows右键菜单:免费工具一键优化桌面效率 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 还在为Windows右键菜单越来越臃肿而烦恼…

Windows右键菜单清理神器:3分钟告别臃肿杂乱,打造高效工作流

Windows右键菜单清理神器:3分钟告别臃肿杂乱,打造高效工作流 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 还在为层层叠叠的右键菜单烦…

终极指南:3个快速解决Modern Fortran扩展配置难题的技巧

终极指南:3个快速解决Modern Fortran扩展配置难题的技巧 【免费下载链接】vscode-fortran-support Fortran language support for Visual Studio Code 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-fortran-support Modern Fortran扩展为Visual Stud…

电话号码定位完全手册:三分钟掌握精准位置查询技术

电话号码定位完全手册:三分钟掌握精准位置查询技术 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirrors…

RVC语音转换WebUI完整使用指南:从安装到精通应用

RVC语音转换WebUI完整使用指南:从安装到精通应用 【免费下载链接】rvc-webui liujing04/Retrieval-based-Voice-Conversion-WebUI reconstruction project 项目地址: https://gitcode.com/gh_mirrors/rv/rvc-webui RVC(Retrieval-based Voice Con…

ncmToMp3终极教程:5分钟解锁网易云VIP加密音乐

ncmToMp3终极教程:5分钟解锁网易云VIP加密音乐 【免费下载链接】ncmToMp3 网易云vip的ncm文件转mp3/flac - ncm file to mp3 or flac 项目地址: https://gitcode.com/gh_mirrors/nc/ncmToMp3 还在为网易云音乐VIP下载的NCM文件无法在其他播放器使用而烦恼吗&…

USACO历年黄金组真题解析 | 2020年2月Timeline

​欢迎大家订阅我的专栏:算法题解:C与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选…