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

标签 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>

然后经过一些研究,我发现这是因为我没有使用 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 函数。

关于C++ 11 的 C++ 编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32556941/

相关文章:

c++ - 尝试将存储在 char 中的时间转换为正常形式。打印一个随机值。怎么了?

c++ - 模板函数类型推导和运算符<<

c++ - 无法使用Xcode通过boost成功编译

macos - 使用 OpenOffice 打开 ms-access 数据文件 (*.mdb)

java - 如何将特定格式的时间戳文本解析为可用于Java代码中的日期/时间算术的数据?

MySql,将日期和时间列组合成时间戳

C++ 在不使用类的情况下验证日期

使用 ostream 的 C++ 日志记录

macos - 应用程序在其他 Mac 上提供 "cant open .app because classic environment is not supported"但在我自己上工作正常

css - 如何在 Mac 上的 Safari 中删除选定元素的光泽?