Keil实现软件版本号与实际编译生成的目标代码版本自动一一对应

本文介绍如何利用Keil的编译日期和时间自动更新软件版本号,以确保版本号与代码编译版本一一对应。通过设置源文件始终编译,确保每次编译时__DATE__和__TIME__更新,解决了手动维护版本号的痛点。同时提醒在发布版本时注意备份目标代码,避免重复编译导致版本混乱。
摘要由CSDN通过智能技术生成

为何有这个需求?

做嵌入式软件开发的人对于手工维护版本号总是心有抵触。因为代码提交很频繁,如果每次提交都需要手动修改子版本号,不胜其烦。而且难免会有遗漏的时候,这样版本号就失去了意义,并不能指明其与代码的真实对应关系。因为即使有版本号,也不知道是否就是预期的版本。
有什么办法能解决这个痛点呢?
答案是有!——使用编译日期与时间替代子版本号。

实现办法

C语言编译器生成目标代码时,会生成常量字符串:__DATE__ 、__TIME__,分别表示编译的日期与时间。将这两个字符串作为版本号的一部分,每次编译时都会自动变化,这样就达到了版本号与代码编译版本唯一对应的目的。
例如,如下代码通过调试打印接口输出版本号及设备UID等信息:

printf("\r\n******************************************************************\r\n");
printf("                        欢迎使用XXXX流量计算机\r\n");
printf("                   固件编译时间:%s %s\r\n", __DATE__, __TIME__);    
printf("                   UID: %08X %08X %08X\r\n", UID[0], UID[1], UID[2]);
printf("******************************************************************\r\n");

问题就这么轻松愉快地解决了?没有这么简单!
多编译运行几次࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值