3
我們使用__TIME__
將編譯時間嵌入到二進制文件中。不幸的是,沒有UTC抵消的時間是毫無意義的。我沒有看到一個明顯的方式來獲取編譯器運行的時區。我想我可以從配置腳本中獲取它。但是有更好的方法嗎?如何獲得__TIME__的UTC偏移量?
如果我從配置腳本中完成它,我需要以某種方式將它放到.h或.c文件中,如果文件不存在,請做些智能的事情。
我們使用__TIME__
將編譯時間嵌入到二進制文件中。不幸的是,沒有UTC抵消的時間是毫無意義的。我沒有看到一個明顯的方式來獲取編譯器運行的時區。我想我可以從配置腳本中獲取它。但是有更好的方法嗎?如何獲得__TIME__的UTC偏移量?
如果我從配置腳本中完成它,我需要以某種方式將它放到.h或.c文件中,如果文件不存在,請做些智能的事情。
您可以使用編譯器標誌將其傳遞給外部。大多數編譯器提供'-D'
標誌以在外部定義#define
宏。假設您將UTC信息放入環境變量中。傳遞環境變量爲-D
標誌
set $myUTC="-7"
gcc -c mysource.cpp -DUTC=$myUTC
在你mysource.cpp
使用宏UTC
:
printf("Compiled at %d Offset %d", __TIME__, UTC);
好了,這樣的配置腳本具有從它的運行時間得到彌補,我們只是假設配置腳本和編譯器在同一時區運行。我猜這是有效的。現在唯一剩下的問題是'date'命令不提供UTC偏移量,所以我需要以其他方式找到它。儘管如此,這看起來像一團糟。 – vy32 2011-05-01 12:43:11
你的腳本會在各個時區運行嗎?如果不是,那麼你可以自己放置它,而不是通過命令找到它。 – asami 2011-05-03 11:57:27
更好的選擇是使用帶有UTC開關和所需格式的'date'命令的輸出。 – 2015-10-19 07:58:26