C 记录编译时间、日期

C 记录编译时间及日期

  近日做嵌入式开发时,需要记录软件版本,所以希望能够获取到当前程序的编译时间及日期,经查询,ANSIC标准已定义了可供C语言使用的预定义宏,其中包括:
  1、__ LINE__ : 在源代码中插入当前源代码行号。
  2、__ FILE __ : 在源代码中插入当前源代码文件名。
  3、__ DATE __ : 在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕
  4、__ TIME __ : 在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕
  标识符__LINE__和__FILE__通常用来调试程序;标识符__DATE__和__TIME__通常用来在编译后的程序中加入一个时间标志,以区分程序的不同版本;这四个都是预编译宏,不是包含在头文件中的
  __FILE__是当前编译的文件的文件名 是一个字符串。
  __TIME__是当前编译的文件的编译时间 格式是hh:mm:ss 是字符串,以":"进行分割。
  __DATE__是当前编译的文件的编译日期 格式是Mmm dd yyyy 是字符串,以空格进行分割。
  __LINE__是调用该宏语句所在的行数,是个十进制数。
  示例如下(这里还进行了字符串分割并转日期格式):

int main(int argc, char* argv[])  
{      
    printf("date:%s,time:%s\n", __DATE__, __TIME__);
    char time[40];
    sprintf(time, "%s", __DATE__);
    //StrReplace(time, " ", "_");
    char *p; 
    p = strtok(time, " ");
    printf("%s\n", p); 
    int year, month, day;
    month = getMonth(p);
    p = strtok(NULL, " ");
    day = atoi(p);
    p = strtok(NULL, " ");
    year = atoi(p);
       
    char temp[128];
    sprintf(temp, "%04d%02d%02d", year, month, day);
    printf("date:%s,time:%s\n", temp, __TIME__);
    return 0;
} 
//date:Jun 22 2021,time:10:16:00
//Jun
//date:20210622,time:10:16:00
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值