是否有可能在编译时获得当前时间



我正在考虑将当前时间戳作为一个版本。我想在编译时检索这些信息。理想情况下,我想做:

constexpr long long currentTimestamp = getCurrentTimestamp();

c 14?

是否可以

使用__DATE__宏使用标准C __TIME__宏。例如,请参见此问题。

使用__DATE____TIME____TIMESTAMP__

#include <stdio.h>
int main()
{
    printf("date: '%s'n", __DATE__);
    printf("time: '%s'n", __TIME__);
    printf("timestamp: '%s'n", __TIMESTAMP__);
}

输出:

date: 'May  5 2017'
time: '00:29:26'
timestamp: 'Fri May  5 00:29:26 2017'

但是,您需要确保由于明显原因重新编译该文件。

来自GCC在线文档:

__DATE__

此宏扩展到一个字符串常数,该字符串描述了正在运行预处理器的日期。字符串常数包含 11个角色,看起来像" 1996年2月12日"。如果那天 一个月小于10,左侧有一个空间。

__TIME__

此宏扩展到一个字符串常数,该字符串描述了预处理器正在运行的时间。字符串常数包含 八个字符,看起来像" 23:59:01"。

__TIMESTAMP__

此宏扩展到一个字符串常数,该常数描述了当前源文件的最后一个修改的日期和时间。这 字符串常数包含一周,月,一天的缩写一天 HH:MM:SS形式,年份,年份,看起来像"太阳9月16日" 01:03:52 1973"。 左侧有一个空间。

请注意,__TIMESTAMP__不是标准的,有些编译器可能不支持它。

相关内容

最新更新