我正在考虑将当前时间戳作为一个版本。我想在编译时检索这些信息。理想情况下,我想做:
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__
不是标准的,有些编译器可能不支持它。