我在下面写的函数是尝试允许32位和64位时间并且努力更灵活。我收到了关于数据转换丢失的持续警告,但这并不是很有意义。
time_t now()
{
using namespace std::chrono;
system_clock::time_point time_point = system_clock::now();
time_t now_time = system_clock::to_time_t(time_point);
return now_time; //warning appears here
}
警告:警告C4244:' =':转换自' __ time64_t'到了&time;'可能会丢失数据 在to_time_t上找到。我感到困惑的是,cppreference指示to_time_t返回time_t,但是当我导航到实际函数时,它表示它被强制为64位时间。
那么,任何想法可能导致这个?此外,我可以更清晰地实现获取系统时间并返回time_t。
我还想补充一下,该示例与此处的内容匹配: cppreference
答案 0 :(得分:0)
这很可能是你遇到了MSVC 2015的文档错误。坏消息是它已经在现已退役的Microsoft Connect中记录。
它在网址https://connect.microsoft.com/VisualStudio/feedback/details/1355735/breaking-change-in-vs-2015-chrono-steady-clock-time-point-not-longer-convertible-to-system-clock-time-point(已死);报告05/22 / 15--06:42。
答案 1 :(得分:0)
事实证明,有一个预处理器定义设置_USE_32BIT_TIME_T。我在搜索时没有看到它,但这似乎是迫使time_t使用32位的原因。至于为什么to_time_t函数返回64位,我想我发现它在64位窗口上运行时被强制为64位。
如果有人能追踪到这一点,那么在这里为后代做好话会很好。我几乎100%肯定我已经看到了,但我现在找不到它。