1. 程式人生 > >VS之版本-獲取編譯時間-用於自動生成版本號

VS之版本-獲取編譯時間-用於自動生成版本號

我們寫軟體的,總希望程式有變動時可以自動生成版本號,不用手動去改,這樣多方便啊。VS編譯器就可實現這個功能。如下所示:

  1. /* 
  2. 獲取程式編譯時間, 用於自動生成版本號很好 
  3.  __DATE__ "Mar 25 2013" 
  4.           "Mar  1 2013" 
  5. __TIME__  "21:42:20" 
  6. */
  7. void  GetProgramCompileTime(SYSTEMTIME &st)  
  8. {  
  9.     TCHAR szDate[20];     
  10.     ZeroMemory(szDate, sizeof(szDate));  
  11.     ZeroMemory(&st, sizeof
    (SYSTEMTIME));  
  12.     _stprintf(szDate, TEXT("%s"), __DATE__);  
  13.     st.wYear = _tcstoul(szDate+7, 0, 10);  
  14.     st.wDay = szDate[5] - TEXT('0');  
  15.     if (szDate[4] != TEXT(' '))  
  16.     {  
  17.         st.wDay += (szDate[4] - TEXT('0')) * 10;  
  18.     }  
  19.     switch(szDate[0])  
  20.     {  
  21.         case TEXT('A'):  
  22.             if
     (szDate[1] == TEXT('p'))  
  23.             {  
  24.                 st.wMonth = 4;  
  25.             }  
  26.             else
  27.             {  
  28.                 st.wMonth = 8;  
  29.             }  
  30.             break;  
  31.         case TEXT('D'):  
  32.             st.wMonth = 12;  
  33.             break;  
  34.         case TEXT('F'):  
  35.             st.wMonth = 2;  
  36.             break;  
  37.         case TEXT('J'):  
  38.             if (szDate[1] == TEXT('a'))  
  39.             {  
  40.                 st.wMonth = 1;  
  41.             }  
  42.             else
  43.             {  
  44.                 if (szDate[2] == TEXT('n'))  
  45.                 {  
  46.                     st.wMonth = 6;  
  47.                 }  
  48.                 else
  49.                 {  
  50.                     st.wMonth = 7;  
  51.                 }  
  52.             }  
  53.             break;  
  54.         case TEXT('M'):  
  55.             if (szDate[2] == TEXT('r'))  
  56.             {  
  57.                 st.wMonth = 3;  
  58.             }  
  59.             else
  60.             {  
  61.                 st.wMonth = 5;  
  62.             }  
  63.             break;  
  64.         case TEXT('N'):  
  65.             st.wMonth = 11;  
  66.             break;  
  67.         case TEXT('O'):  
  68.             st.wMonth = 10;  
  69.             break;  
  70.         case TEXT('S'):  
  71.             st.wMonth = 9;  
  72.             break;  
  73.     }  
  74.     ZeroMemory(szDate, sizeof(szDate));  
  75.     sprintf(szDate, TEXT("%s"), __TIME__);  
  76.     st.wHour = (szDate[0] -TEXT('0')) * 10 + (szDate[1] - TEXT('0'));     
  77.     st.wMinute  = (szDate[3] -TEXT('0')) * 10 + (szDate[4] - TEXT('0'));  
  78.     st.wSecond  = (szDate[6] -TEXT('0')) * 10 + (szDate[7] - TEXT('0'));  
  79.     return;  
  80. }  

  1. GetProgramCompileTime 這個函式把編譯時間獲取出來,儲存到一個SYSTEMTIME的結構體裡,這樣就可以隨便用啦。  

感謝http://blog.csdn.net/haart/article/details/51669197