C语言标准支持两个宏:__DATE__和__TIME__。但是它们的格式不一定符合特定应用场合要求:
场景1:我的一些资源很紧张的单片机工程里,可能只需要直接在小液晶模块上显示“20180813142233”这样一个字符串,任何的额外公式转换都会耗费资源。我需要在程序代码里直接自动出现一行 char *time_str = "20180813142233"。
场景2:我的一些资源很紧张的单片机工程里,可能只需要在程序末尾用最少的字节存储一个程序编译时间,这时4字节的UTC时间格式可能就是最合适的。我需要在程序代码里自动出现一行 const unsigned long amo_time_UTC = 0x5B712B7D; 需要用到时,从串口打印出来,上位机接收后用localtime()这个函数就可以解析得到对应的本地时间字符串
有些IDE可以通过脚本文件交互来生成代码插入到工程里,但是不通用。所以只能写一个小巧的exe程序,让IDE在编译前自动调用这个exe程序(我所了解的IDE都有这个调用外部程序的功能),然后exe程序自动读取windows系统时间,转换为所需的时间格式,输出到一个c文件里,最后IDE编译这个c文件,就得到编译时间了。
在需要引用时间的c文件开头添加一行:
#include "amo_time_string_macro.c"//该文件在工程编译前自动调用amo_time_string_macro.exe生成,包含字符串格式和UTC格式的windows系统当前时间
用法1(插入所有支持的时间格式):amo_time_string_mac