硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4688|回复: 5
收起左侧

[MDK] 如何自动加入系统时间?

[复制链接]

336

主题

2045

回帖

3058

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3058
发表于 2015-1-27 17:25:44 | 显示全部楼层 |阅读模式
有一个需求,自动给当前的软件加入编译时候的时间代码作为版本信息。
比如,程序中有宏定义 #define SW_VER xxxx ;在mdk中怎么表示自动生成编译时刻的时间日期呢?(比如某些软件可以用%data表示系统时间等。)
回复

使用道具 举报

336

主题

2045

回帖

3058

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3058
 楼主| 发表于 2015-1-27 17:32:46 | 显示全部楼层
百度强大啊,瞬间找到答案:

ANSIC标准定义了以下6种可供C语言使用的预定义宏:   
       __LINE__                        在源代码中插入当前源代码行号   
       __FILE__                        在源代码中插入当前源代码文件名   
       __DATE__                        在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕   
       __TIME__                        在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕         
       __STDC__                        当要求程序严格遵循ANSIC标准时该标识符被赋值为1。   
       __cplusplus   
   标识符__LINE__和__FILE__通常用来调试程序;   
   标识符__DATE__和__TIME__通常用来在编译后的程序中加入一个时间标志,以区分程序的不同版本;

这四个都是预编译宏,不是包含在头文件中的
__FILE__是当前编译的文件的文件名 是一个字符串
__TIME__是当前编译的文件的编译时间 格式是hh:mm:ss 是字符串
__DATE__是当前编译的文件的编译日期 格式是Mmm:dd:yyyy 是字符串
__LINE__是调用该宏语句所在的行数,是个十进制数


用在宏定义中

譬如:
#define TEST (__FILE__" "__TIME__) /*这个括号没有也行的*/
int main(void)
{
printf(TEST);
return 0;
}
假如该代码的文件名叫console.cpp
那么会输出文件名加编译时间
.\\console.cpp 21:34:22



但是要注意,因为某些编译器没有严格遵从C99,可能导致此宏无法使用
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107567
QQ
发表于 2015-1-27 21:48:53 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:百度强大啊,瞬间找到答案:

ANSIC标准定义了以下6种可供C语言使用的预定义宏:  
       __LINE__                      .. (2015-01-27 17:32) 
[s:151][s:151][s:151]
回复

使用道具 举报

336

主题

2045

回帖

3058

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3058
 楼主| 发表于 2015-1-28 11:28:47 | 显示全部楼层
我自己试过了。
#define SWVER __DATE__

char swversion[20]=SWVER;

里面的字符串就是 Jan 27 2015
回复

使用道具 举报

116

主题

800

回帖

1148

积分

至尊会员

积分
1148
QQ
发表于 2015-1-28 15:48:39 | 显示全部楼层
以后都能记录住当前的时间?
回复

使用道具 举报

336

主题

2045

回帖

3058

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3058
 楼主| 发表于 2015-1-29 09:48:50 | 显示全部楼层

回 jcx0324 的帖子

jcx0324:以后都能记录住当前的时间? (2015-01-28 15:48) 
__DATE__ 是编译时刻的日期。也就是固定在HEX文件中的。

只要不重新编译,,就不会生成新的hex,这个就是固定不变的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-6 06:46 , Processed in 0.433489 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表