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

Had*_*adi 2 c++ macos time compilation

我正在尝试从 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>
Run Code Online (Sandbox Code Playgroud)

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

任何帮助,将不胜感激。

Ben*_*ley 5

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

解决方案是使用system_clock,如果您不想使用time_t它。system_clock应该至少与 一样高分辨率time_t,因此在此处使用可能更高分辨率的时钟不会给您带来任何好处。或者std::time,如果您只是想要当前时间,则只需首先使用该函数。