我正在尝试写一个秒表,用于跟踪程序的运行时间。显示私人成员的代码如下: -
#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>
的唯一帖子是它现在已经过时了。他们没有提出任何替代方案。你能取悦我吗?
答案 0 :(得分: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;
}
答案 1 :(得分:0)
见here
#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;
}
您可以根据需要修改名称。此外,here是一个<sys/time.h>
答案 2 :(得分:0)
如果您是在Windows环境中进行开发,则可以在程序启动时调用unsigned int startTime = timeGetTime()
(msdn),在结束时调用unsigned int endTime = timeGetTime()
。从endTime
减去startTime
,您就拥有自程序启动以来经过的毫秒数。如果您正在寻找更高的准确性,请查看QueryPerformanceCounter
函数。