2011-04-30 119 views
3

我們使用__TIME__將編譯時間嵌入到二進制文件中。不幸的是,沒有UTC抵消的時間是毫無意義的。我沒有看到一個明顯的方式來獲取編譯器運行的時區。我想我可以從配置腳本中獲取它。但是有更好的方法嗎?如何獲得__TIME__的UTC偏移量?

如果我從配置腳本中完成它,我需要以某種方式將它放到.h或.c文件中,如果文件不存在,請做些智能的事情。

回答

2

您可以使用編譯器標誌將其傳遞給外部。大多數編譯器提供'-D'標誌以在外部定義#define宏。假設您將UTC信息放入環境變量中。傳遞環境變量爲-D標誌

set $myUTC="-7" 
gcc -c mysource.cpp -DUTC=$myUTC 

在你mysource.cpp使用宏UTC

printf("Compiled at %d Offset %d", __TIME__, UTC); 
+0

好了,這樣的配置腳本具有從它的運行時間得到彌補,我們只是假設配置腳本和編譯器在同一時區運行。我猜這是有效的。現在唯一剩下的問題是'date'命令不提供UTC偏移量,所以我需要以其他方式找到它。儘管如此,這看起來像一團糟。 – vy32 2011-05-01 12:43:11

+0

你的腳本會在各個時區運行嗎?如果不是,那麼你可以自己放置它,而不是通過命令找到它。 – asami 2011-05-03 11:57:27

+0

更好的選擇是使用帶有UTC開關和所需格式的'date'命令的輸出。 – 2015-10-19 07:58:26

相關問題