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 机器上运行。
任何帮助,将不胜感激。
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
,如果您只是想要当前时间,则只需首先使用该函数。