我正考虑将当前时间戳用作一个版本。我想在编译时检索该信息。理想情况下,我想这样做:
constexpr long long currentTimestamp = getCurrentTimestamp();
C ++ 14可以实现吗?
答案 0 :(得分:14)
答案 1 :(得分:7)
使用__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'
但是,出于显而易见的原因,您需要确保重新编译该文件。
__DATE__
此宏扩展为一个字符串常量,该常量描述预处理器运行的日期。字符串常量包含 十一个字符,看起来像“1996年2月12日”。如果当天的 月份不到10个,左边是空格。
__TIME__
此宏扩展为一个字符串常量,该常量描述预处理器的运行时间。字符串常量包含 八个字符,看起来像“23:59:01”。
__TIMESTAMP__
此宏扩展为字符串常量,该常量描述上次修改当前源文件的日期和时间。该 字符串常量包含星期,月,日的缩写日 月份,时间以hh:mm:ss形式,年份,看起来像“Sun Sep 16 1973年01:03:52“。如果这个月的日子少于10天,它就会被填充 在左边有一个空格。
请注意,__TIMESTAMP__
不是标准的,有些编译器可能不支持它。