0

我正在尝试编写一个秒表,用于跟踪程序的运行时间。显示私有成员的代码如下:-

#include <sys/time.h>

class stopwatch
{
 private:
  struct timeval *startTime;
  int elaspedTime;
  timezone *Tzp;

  public:   
  //some code here 
};

问题是在编译程序时,我收到一个错误,即ISO C++ forbids declaration of 'timezone' with no type. 我认为这可能是由于我正在使用的库,但我无法纠正我的错误。我在互联网上搜索过,但唯一的帖子<sys/time.h>是它现在已经过时了。他们没有提出任何替代方案。你能不能取悦我。

4

3 回答 3

4

您可以使用chrono

#include <chrono>
#include <iostream>

int main(int argc, char* argv[])
{
    auto beg = std::chrono::high_resolution_clock::now();

    // Do stuff here

    auto end = std::chrono::high_resolution_clock::now();
    std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - beg).count() << std::endl;

    std::cin.get();
    return 0;
}
于 2013-07-19T20:08:22.403 回答
0

如此处所见

#include <iostream>     /* cout */
#include <time.h>       /* time_t, struct tm, difftime, time, mktime */

int main ()
{
  time_t timer;
  struct tm y2k;
  double seconds;

  y2k.tm_hour = 0;   y2k.tm_min = 0; y2k.tm_sec = 0;
  y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;

  time(&timer);  /* get current time; same as: timer = time(NULL)  */

  seconds = difftime(timer,mktime(&y2k));

  std::cout << seconds << "seconds since January 1, 2000 in the current timezone" << endl;

  return 0;
}

您可以根据需要修改名称。另外,这里有一个计时器<sys/time.h>

于 2013-07-19T20:17:40.183 回答
0

如果是在windows环境下开发,可以在程序启动和结束时调用一次unsigned int startTime = timeGetTime()(msdn) 。从中unsigned int endTime = timeGetTime()减去,您将获得自程序启动以来经过的毫秒数。如果您正在寻找更高的准确性,请查看这些功能。endTimestartTimeQueryPerformanceCounter

于 2013-07-20T21:03:00.007 回答