c++11中的c++编译问题

C++ compile issue with c++11

本文关键字:问题 编译 c++ 中的 c++11      更新时间:2023-10-16

我正试图从make文件编译一些c++文件。我一直得到这个错误:

<i> no member named 'to_time_t' in
      'std::__1::chrono::steady_clock'; did you mean
      'std::chrono::system_clock::to_time_t'? 
    time_t tnow = std::chrono::high_resolution_clock::to_time_t(now);
</i>

然后经过一番研究,我发现这是因为我没有使用c++ 11。我用的是MAC OS X 10.10.2。所以我先安装了brew,然后用brew安装了gcc和g++ 4.9。然而,我仍然得到相同的错误。有什么建议吗?此代码运行在linux机器上。

to_time_tsystem_clock的成员,但不一定是steady_clockhigh_resolution_clock的成员。您正在使用high_resolution_clock,在您的系统中,根据错误消息,它似乎是steady_clock的别名,而不是system_clock。如果代码在另一个平台上为您工作,则可能在该平台上,high_resolution_clocksystem_clock的别名,但您不能总是依赖于这种情况。

解决方案是使用system_clock,如果你不想从它的time_tsystem_clock的分辨率至少应该和time_t一样高,所以在这里使用一个可能更高分辨率的时钟并不能给你带来任何好处。或者,如果您只想要当前时间,则首先使用std::time函数。