【C语言内功心法】__DATE__和__TIME__帮你构建更完善的软件版本信息

2023-05-16

弱小和无知,都不是生存的障碍,傲慢才是。

– 刘慈欣《三体》

何为 __DATE____TIME__

__DATE____TIME__C 语言中的两个内置宏,你可以理解为两个字符串值,这两个宏用于记录编译时的时间,也就是预编译的时候,编译器以字符串的形式赋予这两个宏当前编译程序系统的时间。

所以这两个宏的重要特性就很简单粗暴了

  • 它们记录编译时系统的时间,这个时间值随着每次的编译而发生改变(毕竟时间是不可逆的,当然你人为去修改和硬凑也可以凑出相同的值)
  • 它们是以字符串形式呈现的宏。

用途

在嵌入式软件开发的过程中,尤其是比较复杂的软件系统,是需要不断迭代版本的。由于大系统迭代版本比较多,且涉及到多个模块开发人员的合作,在解bug、对齐各个模块软件状态等情况下,一个独特的版本信息是至关重要的。

一般而言,开发人员会采用诸如 SW_VERSION_V01:00:05 的方式去定义版本号,但是这种方式存在一些弊端:

  • 不能告知这个版本的具体生成时间(当然不嫌麻烦的话,手动在版本号上加时间也是可以的)

  • 在快速迭代版本的时候如果忘记改版本号信息,那么就会出现不同的软件出现相同的版本号,这样就容易生出很多很麻烦的事情,比如同样的软件版本号的软件,一个有bug,一个没bug,这时候岂不是可以直接甩锅给硬件的兄弟?

基于此,__DATE____TIME__ 便应运而生,在原本的版本号信息(SW_VERSION_V01:00:05 )上加上编译时间便可让版本号(SW_VERSION_V01:00:05 (Comile time: Dec 4 2022, 16:12:50))变得独一无二。

举个栗子

以串口打印版本号为例,代码实现简单如下:

#define VERSION  "SW_VERSION_V01:00:05"

int main(void)
{
    printf("%s (Compile time: %s,%s)\r\n", VERSION, __DATE__,__TIME__);
    return 0;
}

增加编译时间的版本号后,告知了你这版软件的编译时间,同时即使你忘了修改版本号迭代的数字,编译时间也能给你提示出差别。

效果如下:(采用交互式的方式更好,比如输入 version,就返回版本号,这样更方便)
在这里插入图片描述

更多精彩内容,请点击 CSDN 博客地址http://eureka1024.blog.csdn.net/

更多精彩内容,请关注公众号《嵌入式小散修

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WOolVJxZ-1670146979082)(md_picture/【C语言内功心法】__DATE__和__TIME__帮你构建更完善的软件版本信息_picture/image-20221127004900824.png)]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C语言内功心法】__DATE__和__TIME__帮你构建更完善的软件版本信息 的相关文章

  • ubuntu服务器相关教程

    二 常用操作 1 ssh相关 span class token comment 安装ssh服务 span span class token function sudo span span class token function apt g
  • Qt学习:Qt5.9.2+vs2017移植usb第三方库

    第三方库Hidapi用于实现usb通信 xff0c 将它移植成功以用来实现qt做一个usb通信的上位机 首先是下载hidapi 0 7 0源码 xff1a http www signal11 us oss hidapi 源码文件夹截图如下
  • 超级实用的C++学习网站

    重要说明 xff1a 该博客长期更新 xff0c 方便读者查阅 xff01 一 参考资料 学习C 43 43 这几个网站足矣 二 C 43 43 学习网站 C 43 43 中文网 cppreference 当之无愧的C 43 43 学习第一
  • 目标检测中NMS(非极大抑制)的概念理解

    参考博客 物体检测中常用的几个概念迁移学习 IOU NMS理解 目标定位和检测系列 xff08 3 xff09 xff1a 交并比 xff08 IOU xff09 和非极大值抑制 xff08 NMS xff09 的python实现 一 NM
  • VMware虚拟机上不能使用CUDA/CUDNN

    参考博客 VMware虚拟机上不能使用CUDA Linux Ubuntu 系统查看显卡型号 一 综述 虚拟机的显卡是虚拟的 xff0c 不能使用CUDA 虚拟机上装Nvidia显卡驱动会导致其他驱动全都不能用 xff0c 所以不能在虚拟机上
  • CUDA、CUDNN在windows下的安装及配置

    参考文章 全网最详细 Windows 安装 TensorFlow2 0 GPU 详细教程 Wind10安装anaonda 43 cuda10 1 43 cudnn 43 pytorch 43 tensorflow gpu win10 43
  • windows下CUDA的卸载以及安装

    参考博客 windows 7 下cuda 9 0 卸载 cuda8 0 安装 一 前言 对于一个刚玩CUDA菜鸟来说 xff0c 安装问题就是一个巨大的坑 xff0c 安装过程里面有很多需要注意的细节 xff0c 很多自定义的选项 xff0
  • 算法高级(35)-最优路径选择-导航软件是怎么选择最佳路线的?

    前面我们学习了图算法中的最短路径算法 xff0c 可以参考我的这篇博文常用的图算法 xff1a 最短路径 Shortest Path xff0c 解决最短路的问题有以下算法 xff0c Dijkstra算法 xff0c Bellman Fo
  • FreeRTOS任务创建、删除、挂起、恢复源码分析

    目录 1 任务控制块 结构体TCB t 2 FreeRTOS任务创建源码分析 3 FreeRTOS任务删除源码分析 4 FreeRTOS任务挂起源码分析 5 FreeRTOS任务恢复源码分析 6 任务API总结 xff08 部分 xff09
  • 【pytorch】计算一个CNN模型model的参数量,即论文中常用的#parameters

    在开始之前 xff0c 请记住 xff0c 存储量不是参数量 xff01 xff01 xff01 xff01 存储量不是参数量 xff01 xff01 xff01 xff01 存储量不是参数量 xff01 xff01 xff01 xff01
  • Android本地化字符串strings.xml文件中msgid标记的msgid属性的创建,作用和使用

    系统资源文件msgid属性 Settings res values strings xml lt string name 61 34 device info default 34 gt Unknown lt string gt Settin
  • AI必备技能-OpenCV基础讲解

    x1f389 作者简介 xff1a 目前在读计算机研究生 xff0c 研二 主要研究方向是人工智能和群智能算法方向 目前熟悉python网页爬虫 机器学习 计算机视觉 xff08 OpenCV xff09 群智能算法 然后正在学习深度学习的
  • Qt学习:QtCharts绘制动态曲线,实时更新数据与坐标轴

    前言 xff1a 很久之前写了这篇文章后一直未进行修改更新 xff0c 最近重新整理了代码和扩展了使用方式 代码路径见github https github com LYH ux Qt Projects git 下文讲述结构与一些使用要点
  • 最新Java全套开发视频教程

    适用人群 xff1a 零基础 动手能力差 不愿意错过任何java知识的编程爱好者 课程目录 xff1a 1 课前必学 到底该如何在线学习开发 xff1f 2 全套进阶课程 题库代码免费领取 3 小白入门 Java开发环境搭建 4 小白入门
  • TX2安装Psensor

    TX2安装Psensor过程 笔记备份 STEP1 xff1a 命令 xff1a sudo apt span class token operator span span class token keyword get span insta
  • ubuntu系统unzip解压缩命令

    转载链接unzip使用 1 功能作用 xff1a 解压缩zip文件 2 位置 xff1a usr bin unzip 3 格式用法 xff1a unzip Z opts modifiers file zip list x xlist d e
  • windows安装虚拟机

    1 官网下载VMware 2 安装 xff08 只修改了安装位置 xff0c 其余默认 xff09 3 新建虚拟机 1 xff09 进入目录D Software VMware VMware Workstation xff0c 双击 vmwa
  • 2019中科大数学考研复试题(回忆版)

    2019中科大数学考研复试题 xff08 回忆版 xff09 实变函数 1 平面上横坐标或纵坐标为有理数的点集测度为零 2 f n f n
  • WGS84与大地2000坐标转换(Java,C#,Dart)

    一 坐标转换的必要性 平面坐标在道路测绘 隧道测量 农业建筑业等室外勘测等方面有着广泛的应用 各行业基本都会涉及到移动端测量之后不能满足屏幕坐标 所以需要经纬度的转换 移动端勘测结果都是WGS84坐标或者GCJ 02格式坐标 而实际工程项目
  • 玩转python(一)——微信远程控制电脑

    1 综述 这是一个挺有意思的 python 程序 xff0c 基于 itchat 实现微信控制电脑 你可以通过在微信发送命令 xff0c 来拍摄当前电脑的使用者 xff0c 然后图片会发送到你的微信上 甚至你可以发送命令来远程关闭电脑 效果

随机推荐

  • go get 下载包 modules disabled by GO111MODULE=auto

    Go 版本是 1 12 及以下 zshrc bashrc 加入配置source zshrc 启用 Go Modules 功能 export GO111MODULE 61 on 配置 GOPROXY 环境变量 export GOPROXY 6
  • java中final关键字的作用

    final关键字可以用于三个地方 用于修饰类 类属性和类方法 被final关键字修饰的类不能被继承 xff0c 被final关键字修饰的类属性和类方法不能被覆盖 xff08 重写 xff09 xff1b 对于被final关键字修饰的类属性而
  • 【锻体篇-硬件开发】获取精准的电流信号 -- 电路设计与注意事项

    朋友像棉被 xff0c 感到温暖是因为你自己的温度 概述 在嵌入式开发领域 xff0c 一个设计优秀的硬件就像一副健壮的躯体 xff0c 配以聪明的大脑 xff08 软件 xff09 xff0c 就能够发挥出其强大的威力 对于电流信号 xf
  • 【RT-Thread】使用 Finsh 查看线程状态中的 sp 代表什么意思?

    佛说 xff1a 一切有为法 xff0c 如梦幻泡影 xff0c 如露亦如电 xff0c 应作如是观 金刚经 详解 sp 含义 最近使用 RT Thread 的 Finsh 输入 list thread 命令查看线程状态时 xff0c 突然
  • Qt学习:常用数学函数

    C语言中 Qt中 xff0c 都没有以任意为底数的对数函数 xff0c 所以log5 3 以5为底 是没有的 但是可以用logx y 61 ln y ln x 来代替 xff0c 修改代码如下 1 Qt中对数 xff0c 通过自然对数qLn
  • 【好书推荐】-- 《以太网权威指南》(第2版)

    书籍的全部意义是使人善用自己的孤独 匡扶 纳闷集 稍微点题外话 xff0c 最近换了份跟汽车电子相关的工作 xff0c 突然强度就上来了 xff0c 以前5天8小时还能摸鱼的幸福时光还甚是想念 话扯远了 xff0c 回到文章内容 因为最近手
  • 【神器】截图+贴图工具 Snipaste

    生活就好像一大杯 xff0c 一直在续着热水的茶 一天天过下去就像一次次开水 xff0c 到后来越来越淡 xff0c 根本没味道了 匡扶 纳闷集 1 推荐理由 今天介绍的这款神器 xff0c 名唤 Snipaste 毫不夸张地说 xff0c
  • 【好书推荐】第一本无人驾驶技术书

    炮制虽繁必不敢省人工 xff0c 品味虽贵必不敢减物力 xff0c 修合无人见 xff0c 存心有天知 同仁堂古训 推荐理由 智能驾驶行业如火如荼 xff0c 和半导体 xff08 在中国 xff09 元宇宙等新兴行业一样有着醉人的科技元素
  • 【神器】MarkDown-沉浸写作的利器

    最好的销售方法 xff0c 就是真诚地相信你所销售的东西 出售你真正相信的东西感觉很棒 xff0c 而试图出售你不相信的东西 xff0c 感觉很糟糕 Sam Altman 如何成功 1 缘起 话说天下文档格式各有不同 xff0c 富文本格式
  • 【好书推荐】C语言程序设计:现代方法(第二版)

    待到秋来九月八 xff0c 我花开后百花杀 冲天香阵透长安 xff0c 满城尽带黄金甲 唐 黄巢 不第后赋菊 推荐理由 C 语言作为嵌入式开发的必备语言 xff0c 重要性不言而喻 基于此 xff0c 本次推荐的书籍是 C语言程序设计 xf
  • 【好书推荐】网络是怎样连接的

    游山五岳东道主 xff0c 拥书百城南面王 万人丛中一握手 xff0c 使我衣袖三年香 龚自珍 投宋于庭翔凤 xff08 最后两句 xff0c 我愿称之为目前所见最强 夸夸 词 xff09 推荐理由 今天推荐的这本书想必很多搞计算机网络的人
  • 【好书推荐】程序是怎样跑起来的

    一位护士问临终的病人 xff0c 他们有什么遗憾 这个护士后来总结了 5 个最常见的回答 xff1a 不要忽视你的梦想 xff0c 不要工作太久 xff0c 说出你内心所想 xff0c 结交朋友 xff0c 要开心 推荐理由 之前有推荐过两
  • 【好书推荐】图解TCP-IP(第5版)

    有一个公式 xff1a 幸运 61 你做的事情 X 知道的人数 你做的事情越多 xff0c 知道的人越多 xff0c 越可能幸运 发表作品会增加你的幸运 推荐理由 由于工作现在与网络技术密切相关 xff0c 所以工作之余会重点补充这方面的知
  • 【神器】Adobe Illustrator-作图利器

    但我们却不加留意地度过我们美好的日子 xff0c 只有到了糟糕的日子真正来临的时候 xff0c 我们才会想念和渴望曾经有过的美好日子 我们脸带愁容 xff0c 许多欢乐愉快的时光未加品尝和咀嚼就过去了 xff0c 直到以后日子变得艰难和令人
  • 嘉立创EDA的一些使用技巧

    立创EDA专业版 使用教程 lceda cn https prodocs lceda cn cn faq editor index html绘制板框 xff1a https blog csdn net gutie bartholomew a
  • Halcon —— 图像像素类型与转换

    图像类型 就目前工业领域主流的图像处理工具halcon来讲 xff0c 有以下几种图像类型 xff1a byte complex cyclic direction int1 int2 int4 int8 real uint2 xff0c 具
  • 【神器】嘉立创EDA推荐及一些技巧

    食肉何曾尽虎头 xff0c 卅年书剑海天秋 文章幸未逢黄祖 xff0c 襆被今犹窘马周 自是汝才难用世 xff0c 岂真吾相不当侯 须知少日拏云志 xff0c 曾许人间第一流 清代 吴庆坻 题三十计小象 背景 最近因为需要 xff0c 所以
  • 【Keil】编译选项设置 Warning 为 error

    死亡是一座永恒的灯塔 xff0c 不管你驶向何方 xff0c 最终都会朝它转 一切都将逝去 xff0c 只有死神永生 刘慈欣 三体 前言 众所周知 xff0c 一般而言 xff0c 编译程序过程中的 warning 警告并不会影响可执行文件
  • 【好书推荐】计算机网络:自顶向下方法(第七版)

    人生的美妙之处在于迷上一样东西 人生苦短 xff0c 少做些虚无缥缈的事 刘慈欣 三体 推荐理由 自计算机网络诞生以来 xff0c 经过数十年的发展 xff0c 计算机的体系已经非常庞大 xff0c 同时计算机网络也大大促进了人类社会的发展
  • 【C语言内功心法】__DATE__和__TIME__帮你构建更完善的软件版本信息

    弱小和无知 xff0c 都不是生存的障碍 xff0c 傲慢才是 刘慈欣 三体 何为 DATE 和 TIME xff1f DATE 和 TIME 是 C 语言中的两个内置宏 xff0c 你可以理解为两个字符串值 xff0c 这两个宏用于记录编