我正在尝试从 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_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
函数。
关于C++ 11 的 C++ 编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32556941/