C 獲取程式編譯時間

2021-09-07 19:18:15 字數 1495 閱讀 7375

乙個簡單的需求,就是需要程式判斷當前系統的時間是不是在程式編譯之後的,如果系統當前時間在編譯之前,那說明這台機器的時間是不正確的,需要終止程式執行。

因為要在程式編譯時候獲取時間,如果每次編譯前手動修改的話,稍微顯得麻煩了一點。

vc中可以使用visual c + + 編譯器預定義的巨集來獲取編譯時間,有__date____time__(這兩個是iso c99 和 iso c + + 14 標準預定義的巨集)__timestamp__(這個是vs預定義的)三個巨集可以獲取,但是獲取到的是字串形式的時間,所以不太利於進行比較。

這裡寫乙個函式,用來獲取編譯時候的時間。

// 獲取編譯時間

void getcompiletime(lpsystemtime lpcompiletime)

sscanf_s(__time__, "%hu:%hu:%hu", &lpcompiletime->whour,

&lpcompiletime->wminute, &lpcompiletime->wsecond);

lpcompiletime->wdayofweek = lpcompiletime->wmilliseconds = 0;

}

因為編譯器給出的時間實際上是本地時間,所以這裡如果進行判斷的話,可以與getlocaltime的結果進行比較。

systemtime lt, ct;

getlocaltime(<);

getcompiletime(&ct);

filetime flt, fct;

systemtimetofiletime(<, &flt);

systemtimetofiletime(&ct, &fct);

if (flt.dwhighdatetime < fct.dwhighdatetime ||

(flt.dwhighdatetime == fct.dwhighdatetime && flt.dwlowdatetime < fct.dwlowdatetime))

這裡沒有考慮不同時區的問題。

clang和gcc下可以使用__date____time__巨集來獲取編譯時間,這兩個在多位元組字元常量上與vs的處理有些不同。不多說,直接放**。

void getcompiletime(struct tm* lpcompiletime)

sscanf(__time__, "%d:%d:%d", &lpcompiletime->tm_hour,

&lpcompiletime->tm_min, &lpcompiletime->tm_sec);

lpcompiletime->tm_isdst = lpcompiletime->tm_wday = lpcompiletime->tm_yday = 0;

}

iOS App獲取編譯時間資訊

目前使用過的有2種 1.通過c語言特性的macro獲取 nsstring builddate nsstringstringwithformat s s date time 這是最簡單有效的方法。2.通過xcode的scheme來完成,xcode種的scheme可以部署在編譯前後可以自定義一些操作 選...

iOS ipa包編譯時間獲取

line 呼叫該巨集語句所在的行數,是個十進位制數 file 當前編譯的檔案的檔名 date 當前編譯的檔案的編譯日期 time 當前編譯的檔案的編譯時間 呼叫方式 nsstring builddate nsstring stringwithformat s s date time 或nsstrin...

C 獲取程式執行時間

命名空間 system.diagnostics stopwatch 例項可以測量乙個時間間隔的執行時間,也可以測量多個時間間隔的總執行時間。在典型的 stopwatch 方案中,先呼叫 start 方法,然後呼叫 stop 方法,最後使用 elapsed 屬性檢查執行時間。stopwatch 例項或...