在用PB開發軟件時,有時候需要根據日期來生成軟件的版本號。比如軟件的版本為V5,為了體現同一版本軟件在不同日期下編譯生成的版本差異化,我們有時候會在軟件的版本後面加上build和日期,類似於這樣:V5 build20110727 ,表示該軟件的版本是V5,編譯日期時2011-07-27 。
【V5 build】這一字符串在很長一段時間內基本上是固定的,但是【20110727】這一日期串是經常變動的。如何實時的添加這個日期串呢?
常規的做法有兩種。
一、每次編譯之前,手動更改該日期串為編譯當日的日期。這種做法很簡單,但是更改的步驟容易被我們遺忘。
二、通過API函數在軟件運行過程中,動態獲取軟件exe文件的最後修改日期(獲取方面可以參考我的博客:PB獲取和設置文件最後修改日期的API方法 ),再賦值給日期串。這種做法比較復雜,需要了解API(當然封裝成自定義對象後,使用起來也不會太麻煩),但是它能避免手動修改的易遺忘,保證每次編譯後都能准確取到最後的編譯日期。
本文所要介紹的這種方法,思路與上面的第二種有點類似,都是取軟件編譯日期,但是實現起來卻是跟第一種方法一樣簡單,也不需要使用API函數。具體的做法如下:
[cpp]
string ls_ver = "V5 build" + string(today(), "yyyymmdd") //編譯後ls_ver裡面存儲的值就是【V5 build加上編譯的日期 】了
其實就是這麼簡單。www.2cto.com 由於變量的初始值是在編譯時形成的,因此,對於上面我們聲明的string類型變量ls_ver 來說, 軟件編譯時,會自動獲取編譯時的日期,並將編譯時的日期賦值給ls_ver 。
假設軟件是在2011-07-27編譯的那麼上面的變量初始化賦值語句,等同於:
[cpp]
string ls_ver = "V5 build20110727”
其實也可以將這種思路理解為跟第一種方法類似,只是將“編譯前手動更改該日期串為編譯當日的日期”,自動化為“編譯時自動更改該日期串為編譯當日的日期”。
上面介紹的取編譯日期的方法,只是一個很小的功能,但是對於我們程序員來說,它給了我們很多的啟迪,我們可以按照這種思路,炮制出一大堆的應用。比如:取軟件編譯時的電腦名稱、IP地址、網卡地址、操作系統信息等等。
希望我的這種做法,能夠起到拋磚引玉的作用。
摘自 yyoinge的專欄