VS之版本-獲取編譯時間-用於自動生成版本號
阿新 • • 發佈:2019-01-01
我們寫軟體的,總希望程式有變動時可以自動生成版本號,不用手動去改,這樣多方便啊。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
- _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
- {
- 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的結構體裡,這樣就可以隨便用啦。
感謝http://blog.csdn.net/haart/article/details/51669197