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