如何获取程序的编译时间

有两个宏可以获取获取编译的时间

__DATA__:编译的日期

__TIME__:编译的时间

可以通过打印来看编译的日期和时间:

printf("data: %s     time: %s",__DATA__,__TIME__);

有时需要将编译的时间放入版本号中,方法如下:

#include "stdlib.h"

#define BUILD_YEAR_CH0 (__DATE__[ 7])
#define BUILD_YEAR_CH1 (__DATE__[ 8])
#define BUILD_YEAR_CH2 (__DATE__[ 9])
#define BUILD_YEAR_CH3 (__DATE__[10])

#define BUILD_MONTH_IS_JAN (__DATE__[0] == ‘J‘ && __DATE__[1] == ‘a‘ && __DATE__[2] == ‘n‘)
#define BUILD_MONTH_IS_FEB (__DATE__[0] == ‘F‘)
#define BUILD_MONTH_IS_MAR (__DATE__[0] == ‘M‘ && __DATE__[1] == ‘a‘ && __DATE__[2] == ‘r‘)
#define BUILD_MONTH_IS_APR (__DATE__[0] == ‘A‘ && __DATE__[1] == ‘p‘)
#define BUILD_MONTH_IS_MAY (__DATE__[0] == ‘M‘ && __DATE__[1] == ‘a‘ && __DATE__[2] == ‘y‘)
#define BUILD_MONTH_IS_JUN (__DATE__[0] == ‘J‘ && __DATE__[1] == ‘u‘ && __DATE__[2] == ‘n‘)
#define BUILD_MONTH_IS_JUL (__DATE__[0] == ‘J‘ && __DATE__[1] == ‘u‘ && __DATE__[2] == ‘l‘)
#define BUILD_MONTH_IS_AUG (__DATE__[0] == ‘A‘ && __DATE__[1] == ‘u‘)
#define BUILD_MONTH_IS_SEP (__DATE__[0] == ‘S‘)
#define BUILD_MONTH_IS_OCT (__DATE__[0] == ‘O‘)
#define BUILD_MONTH_IS_NOV (__DATE__[0] == ‘N‘)
#define BUILD_MONTH_IS_DEC (__DATE__[0] == ‘D‘)

#define BUILD_MONTH_CH0 \
((BUILD_MONTH_IS_OCT || BUILD_MONTH_IS_NOV || BUILD_MONTH_IS_DEC) ? ‘1‘ : ‘0‘)

#define BUILD_MONTH_CH1 \
( \
(BUILD_MONTH_IS_JAN) ? ‘1‘ : \
(BUILD_MONTH_IS_FEB) ? ‘2‘ : \
(BUILD_MONTH_IS_MAR) ? ‘3‘ : \
(BUILD_MONTH_IS_APR) ? ‘4‘ : \
(BUILD_MONTH_IS_MAY) ? ‘5‘ : \
(BUILD_MONTH_IS_JUN) ? ‘6‘ : \
(BUILD_MONTH_IS_JUL) ? ‘7‘ : \
(BUILD_MONTH_IS_AUG) ? ‘8‘ : \
(BUILD_MONTH_IS_SEP) ? ‘9‘ : \
(BUILD_MONTH_IS_OCT) ? ‘0‘ : \
(BUILD_MONTH_IS_NOV) ? ‘1‘ : \
(BUILD_MONTH_IS_DEC) ? ‘2‘ : \
/* error default */ ‘?‘ \
)

#define BUILD_DAY_CH0 ((__DATE__[4] >= ‘0‘) ? (__DATE__[4]) : ‘0‘)
#define BUILD_DAY_CH1 (__DATE__[ 5])

#define BUILD_HOUR_CH0 (__TIME__[0])
#define BUILD_HOUR_CH1 (__TIME__[1])

#define BUILD_MIN_CH0 (__TIME__[3])
#define BUILD_MIN_CH1 (__TIME__[4])

#define BUILD_SEC_CH0 (__TIME__[6])
#define BUILD_SEC_CH1 (__TIME__[7])

uint8_t year[5] = {‘\0‘};
uint8_t mon[3]  = {‘\0‘};
uint8_t day[3]  = {‘\0‘};

uint8_t firmware_year = 0;
uint8_t firmware_mon  = 0;
uint8_t firmware_day  = 0;

void time_convert(void)
{
    year[0] = BUILD_YEAR_CH2;
    year[1] = BUILD_YEAR_CH3;

mon[0]  = BUILD_MONTH_CH0;
    mon[1]  = BUILD_MONTH_CH1;

day[0]  = BUILD_DAY_CH0;
    day[1]  = BUILD_DAY_CH1;

//将字符串转换成整形
    firmware_year = atoi(year);
    firmware_mon  = atoi(mon);
    firmware_day  = atoi(day);
}

时间: 2024-09-29 06:13:43

如何获取程序的编译时间的相关文章

浅谈 .NET 程序的编译时间

我们在编写 .NET 程序时,经常会在该程序的"关于本软件"对话框中给出这个程序的编译时间,如下图所示: 上图中的编译时间是如果得到的呢?其实是在其 C# 源程序中有这么一句: [assembly: AssemblyVersion("1.3.*")] 上述语句使用了 System.Reflection.AssemblyVersionAttribute 类,该类用于指定正在特性化的程序集的版本.在 MSDN 文档中有以下描述: 程序集版本号是程序集标识的一部分,在绑定

用c++实现获取程序运行的时间

1 #include<iostream> 2 #include<ctime> 3 using namespace std; 4 int main() 5 { 6 time_t begin,end; 7 begin=clock(); 8 cout<<"**************************\n\n\n\n\n\nI love you!\n\n\n\n\n**************************"<<endl; 9

C#获取程序集自动增加的版本号和编译时间

1. 首先找到文件AssemblyInfo.cs, 路径如下: 2. 修改版本的格式,修改后,程序每次编译,程序集的版本号都会自增. 修改前: [assembly: AssemblyVersion("1.0.0.0")][assembly: AssemblyFileVersion("1.0.0.0")] 修改后: [assembly: AssemblyVersion("1.0.*")][assembly: AssemblyFileVersion(

时间获取程序服务器 TCP 协议相关性

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 最初代码: 这是一个简单的时间获取服务器程序.它和时间获取程序客户端一道工作. TCP/IPv4, IPv6 协议相关 IPv4 --> IPv6 (把代码中出现的左边的字符串换为右边的,就变成了IPv6版本的) sockaddr_in --> sockaddr_in6 AF_INET --> AF_INET6 sin_family --> sin6_family sin_p

UNIX网络编程卷1 时间获取程序server TCP 协议相关性

本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie 最初代码: 这是一个简单的时间获取server程序.它和时间获取程序client一道工作. 它是 协议相关,把代码中出现的左边的字符串换为右边的,就变成了IPv6版本号的 IPv4 --> IPv6 sockaddr_in --> sockaddr_in6 AF_INET --> AF_INET6 sin_family --> sin6_family sin_port --&

打印程序编译时间

打印程序编译时间 #include <stdio.h> int main() { printf(__DATE__); printf("\n"); printf(__TIME__); printf("\n"); return 0; }

获取系统时间&amp;&amp;获取程序某一段执行时间

获取系统时间: CTime  _time; CString m_SystemTime("");  _time=CTime::GetCurrentTime();  m_SystemTime=_time.Format("%Y-%m-%d  %H:%M:%S"); 获取程序某一段执行时间: DWORD  betime(0),endtime(0),sumtime(0); int i=0; betime=GetTickCount(); while(i<10) {  Sl

linux 程序、动态库、静态库内部添加版本号和编译时间

给程序和库添加版本号和库,有利于维护和升级. 当然你可以在文件名上体现,比如有个程序叫 yun,文件名写为 yun_1.0.2,但这个需要每次手动维护,而且不能100%确保当前程序就是那个版本.所以,把版本号体现在程序内部,是一个不错的选择. -----------------------------------  我是做法分割线 o  ------------------------------------ 一.可执行程序 程序内部定义版本宏,然后 main 函数通过 -v 参数,打印版本号和

C#获取程序集的版本号和最后编译时间

C#获取程序集的版本号:string ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); C#中如何将记录项目的最后编译时间:在实际的软件开发工作中,我们通常需要记录某个工程的最后编译时间,原来在C++中,我们有个__DATE__,__TIME__,__FILE__,__LINE__这样的异性宏定义可以使用,但是在C#中,不能使用,但是可以用以下语句来获得最后编译时间.Syst