如何获取 __TIME__ 的UTC偏移量?

6
我们使用__TIME__将编译时间嵌入二进制文件中。不幸的是,没有UTC偏移量的时间是没有意义的。我看不出有明显的方法可以获取编译器运行的时区。我想我可以从配置脚本中获取这个信息。但是有更好的方法吗?
如果我从配置脚本中获取,我需要以某种方式将其放入.h或.c文件中,并在文件不存在时执行一些智能操作。
1个回答

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);

好的,那么configure脚本必须从运行时间获取偏移量,并且我们只是假设configure脚本和编译器在同一个时区运行。我想那会起作用。现在唯一剩下的问题是date命令不提供UTC偏移量,所以我需要找到其他方法。尽管如此,这似乎是一个临时解决办法。 - vy32
你的脚本是否会在不同的时区运行?如果不是,那么你可以自己设置时区,而不必通过命令查找。 - asami
1
更好的选择是使用带有UTC开关和所需格式的date命令的输出。 - Mikhail Edoshin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接