弱小和无知,都不是生存的障碍,傲慢才是。
– 刘慈欣《三体》
何为 __DATE__
和__TIME__
?
__DATE__
和__TIME__
是 C
语言中的两个内置宏,你可以理解为两个字符串值,这两个宏用于记录编译时的时间,也就是预编译的时候,编译器以字符串的形式赋予这两个宏当前编译程序系统的时间。
所以这两个宏的重要特性就很简单粗暴了
- 它们记录编译时系统的时间,这个时间值随着每次的编译而发生改变(毕竟时间是不可逆的,当然你人为去修改和硬凑也可以凑出相同的值)
- 它们是以字符串形式呈现的宏。
用途
在嵌入式软件开发的过程中,尤其是比较复杂的软件系统,是需要不断迭代版本的。由于大系统迭代版本比较多,且涉及到多个模块开发人员的合作,在解bug、对齐各个模块软件状态等情况下,一个独特的版本信息是至关重要的。
一般而言,开发人员会采用诸如 SW_VERSION_V01:00:05
的方式去定义版本号,但是这种方式存在一些弊端:
基于此,__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
,就返回版本号,这样更方便)
![在这里插入图片描述](https://img-blog.csdnimg.cn/40f513d64f9d4b2d80352ec015761ce1.png)
更多精彩内容,请点击 CSDN 博客地址: http://eureka1024.blog.csdn.net/
。
更多精彩内容,请关注公众号《嵌入式小散修
》。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WOolVJxZ-1670146979082)(md_picture/【C语言内功心法】__DATE__和__TIME__帮你构建更完善的软件版本信息_picture/image-20221127004900824.png)]](https://img-blog.csdnimg.cn/dd7c0e7683814696a697e7d61fa8a3a2.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)