2011-04-30 68 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

相关问题