获取程序编译时间, 用于自动生成版本号
2016-06-14 10:21
716 查看
我们写软件的,总希望程序有变动时可以自动生成版本号,不用手动去改,这样多方便啊。VS编译器就可实现这个功能。如下所示:
/*
获取程序编译时间, 用于自动生成版本号很好
__DATE__ "Mar 25 2013"
"Mar 1 2013"
__TIME__ "21:42:20"
*/
void GetProgramCompileTime(SYSTEMTIME &st)
{
TCHAR szDate[20];
ZeroMemory(szDate, sizeof(szDate));
ZeroMemory(&st, sizeof(SYSTEMTIME));
_stprintf(szDate, TEXT("%s"), __DATE__);
st.wYear = _tcstoul(szDate+7, 0, 10);
st.wDay = szDate[5] - TEXT('0');
if (szDate[4] != TEXT(' '))
{
st.wDay += (szDate[4] - TEXT('0')) * 10;
}
switch(szDate[0])
{
case TEXT('A'):
if (szDate[1] == TEXT('p'))
{
st.wMonth = 4;
}
else
{
st.wMonth = 8;
}
break;
case TEXT('D'):
st.wMonth = 12;
break;
case TEXT('F'):
st.wMonth = 2;
break;
case TEXT('J'):
if (szDate[1] == TEXT('a'))
{
st.wMonth = 1;
}
else
{
if (szDate[2] == TEXT('n'))
{
st.wMonth = 6;
}
else
{
st.wMonth = 7;
}
}
break;
case TEXT('M'):
if (szDate[2] == TEXT('r'))
{
st.wMonth = 3;
}
else
{
st.wMonth = 5;
}
break;
case TEXT('N'):
st.wMonth = 11;
break;
case TEXT('O'):
st.wMonth = 10;
break;
case TEXT('S'):
st.wMonth = 9;
break;
}
ZeroMemory(szDate, sizeof(szDate));
sprintf(szDate, TEXT("%s"), __TIME__);
st.wHour = (szDate[0] -TEXT('0')) * 10 + (szDate[1] - TEXT('0'));
st.wMinute = (szDate[3] -TEXT('0')) * 10 + (szDate[4] - TEXT('0'));
st.wSecond = (szDate[6] -TEXT('0')) * 10 + (szDate[7] - TEXT('0'));
return;
}
/*
获取程序编译时间, 用于自动生成版本号很好
__DATE__ "Mar 25 2013"
"Mar 1 2013"
__TIME__ "21:42:20"
*/
void GetProgramCompileTime(SYSTEMTIME &st)
{
TCHAR szDate[20];
ZeroMemory(szDate, sizeof(szDate));
ZeroMemory(&st, sizeof(SYSTEMTIME));
_stprintf(szDate, TEXT("%s"), __DATE__);
st.wYear = _tcstoul(szDate+7, 0, 10);
st.wDay = szDate[5] - TEXT('0');
if (szDate[4] != TEXT(' '))
{
st.wDay += (szDate[4] - TEXT('0')) * 10;
}
switch(szDate[0])
{
case TEXT('A'):
if (szDate[1] == TEXT('p'))
{
st.wMonth = 4;
}
else
{
st.wMonth = 8;
}
break;
case TEXT('D'):
st.wMonth = 12;
break;
case TEXT('F'):
st.wMonth = 2;
break;
case TEXT('J'):
if (szDate[1] == TEXT('a'))
{
st.wMonth = 1;
}
else
{
if (szDate[2] == TEXT('n'))
{
st.wMonth = 6;
}
else
{
st.wMonth = 7;
}
}
break;
case TEXT('M'):
if (szDate[2] == TEXT('r'))
{
st.wMonth = 3;
}
else
{
st.wMonth = 5;
}
break;
case TEXT('N'):
st.wMonth = 11;
break;
case TEXT('O'):
st.wMonth = 10;
break;
case TEXT('S'):
st.wMonth = 9;
break;
}
ZeroMemory(szDate, sizeof(szDate));
sprintf(szDate, TEXT("%s"), __TIME__);
st.wHour = (szDate[0] -TEXT('0')) * 10 + (szDate[1] - TEXT('0'));
st.wMinute = (szDate[3] -TEXT('0')) * 10 + (szDate[4] - TEXT('0'));
st.wSecond = (szDate[6] -TEXT('0')) * 10 + (szDate[7] - TEXT('0'));
return;
}
GetProgramCompileTime 这个函数把编译时间获取出来,保存到一个SYSTEMTIME的结构体里,这样就可以随便用啦。
相关文章推荐
- Linux C函数参考手册(PDF版)
- 批量自动安装常用软件
- 批量自动安装常用软件
- 企业批量部署RealVNC远程控制软件
- 好用的Markdown编辑器一览
- C# partial关键字说明
- 网上视频站 视频下载利器 优酷网 视频下载 必备 软件 下载[原创]_常用工具_脚本之家
- Lua教程(十七):C API简介
- 简单谈谈lua和c的交互
- C#用链式方法表达循环嵌套
- C#中的委托数据类型简介
- C#编写的艺术字类实例代码
- C#实现打造气泡屏幕保护效果
- 举例讲解C#编程中委托的实例化使用
- 使用C#代码获取存储过程返回值
- C和指针小结(推荐)
- C++中explict关键字用法
- C/C++数据对齐详细解析