1

考虑这个代码示例:

#include <chrono>
#include <iostream>

int main ( )
{
   using namespace std::chrono;

   system_clock::time_point s = system_clock::now();

   for (int i = 0; i < 1000000; ++i)
      std::cout << duration_cast<duration<double>>(system_clock::now() - s).count() << "\n";
}

我希望这能以秒为单位打印经过的时间。但它实际上以数千秒为单位打印时间(预期结果乘以 0.001)。难道我做错了什么?

编辑

因为seconds等价于duration<some-int-type>duration_cast<seconds>所以给出相同的结果。

我用 gcc-4.7.3-r1

4

3 回答 3

2

您的程序使用 gcc 4.8.2 和 VS2013 按预期工作。我认为这可能是您的旧 gcc 4.7 中的编译器错误

于 2014-02-26T11:43:04.637 回答
0

maverik 猜对了:问题在于内部的二进制不兼容std::chrono- gcc-4.8 版本的 libstdc++ 和 gcc-4.7 没有就内部时间单位达成一致。

于 2016-04-25T22:51:43.120 回答
-2

你可以使用 duration_cast < seconds > 而不是 duration_cast < duration < double >>

于 2014-02-26T11:20:21.110 回答