生成软件版本号是在软件开发和维护过程中非常重要的一项任务,它有很多意义和好处,同时也有多种常见的方法。
在C语言中,有一些特殊的宏定义,用于获取当前编译日期和时间等信息。以下是两个常见的宏定义示例:
printf("编译日期:%sn", __DATE__);
这个宏会在编译时被替换为一个字符串,表示编译源代码的日期。通常,它的格式类似于"Sep 11 2023",表示月份、日期和年份。
printf("编译时间:%sn", __TIME__);
这个宏会在编译时被替换为一个字符串,表示编译源代码的时间。通常,它的格式类似于"12:34:56",表示小时、分钟和秒。
这些宏可以用于在代码中记录编译日期和时间,这在调试和版本管理中非常有用。
#include "version.h"
#include < string.h >
#include < stdlib.h >
void Get_Compile_Date_Base(uint8_t *Year, uint8_t *Month, uint8_t *Day)
{
//Sep 11 2023
constchar *pMonth[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
constchar Date[12] = __DATE__;//取编译日期
uint8_t i;
for(i = 0; i < 12; i++)if(memcmp(Date, pMonth[i], 3) == 0)*Month = i + 1, i = 12;
*Year = (uint8_t)atoi(Date + 9); //Date[9]为2位年份,Date[7]为完整年份
*Day = (uint8_t)atoi(Date + 4);
}
void Get_Compile_Time_Base(uint8_t *HH, uint8_t *MM, uint8_t *SS)
{
//15:40:23
constchar Time[10] = __TIME__;//取编译时间
*HH = (uint8_t)atoi(Time + 0);
*MM = (uint8_t)atoi(Time + 3);
*SS = (uint8_t)atoi(Time + 6);
}
char g_date_buf[10];
char g_time_buf[10];
char g_version_buf[20];
char* Get_Compile_Date(void)
{
uint8_t Year, Month, Day;
Get_Compile_Date_Base(&Year, &Month, &Day);//取编译日期
sprintf(g_date_buf, "20%02d-%02d-%02d", Year, Month, Day);//任意格式化
return g_date_buf;
}
char* Get_Compile_Time(void)
{
uint8_t HH, MM, SS;
Get_Compile_Time_Base(&HH, &MM, &SS);//取编译时间
sprintf(g_time_buf, "%02d:%02d:%02d", HH, MM, SS);//任意格式化
return g_time_buf;
}
char* Get_Compile_Ver(void)
{
uint8_t Year, Month, Day;
uint8_t HH, MM, SS;
Get_Compile_Date_Base(&Year, &Month, &Day);//取编译日期
Get_Compile_Time_Base(&HH, &MM, &SS);//取编译时间
sprintf(g_version_buf, "20%02d-%02d-%02d-%02d-%02d-%02d",Year, Month, Day, HH, MM, SS);//任意格式化
return g_version_buf;
}
#ifndef _VERSION_H_
#define _VERSION_H_
#include "stm32f4xx.h"
char* Get_Compile_Date(void);
char* Get_Compile_Time(void);
char* Get_Compile_Ver(void);
#endif
printf("RI QI:%srn",__DATE__);
printf("SHI JIAN:%srn",__TIME__);
printf("#############################Test#########################rn");
printf("RI QI:%srn",Get_Compile_Date());
printf("SHI JIAN:%srn",Get_Compile_Time());
printf("Soft Version:%srn",Get_Compile_Ver());
编译时间是:2023年9月11日21点03分57秒(就是刚才)
全部0条评论
快来发表一下你的评论吧 !