ITPub博客

首页 > 应用开发 > > !新人求教!

!新人求教!

作者:choubou 时间:2019-08-15 10:48:57 0 删除 编辑

新人求教 错误 timer.h(15) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)

使用 'Microsoft Visual C++ 2013 Professional' 编译。

timer.h文件源码如下

#ifndef _TIMER_H_
#define _TIMER_H_

#include <string>
#include <sstream>
//#include <sys/time.h> //windows下的time.h中没有timeval定义
#include<windows.h> //windows下代替<sys/time.h>
#include<time.h> //windows下代替<sys/time.h>


using namespace std;


//windows下没有gettimeofday函数,从网上找的一个替代函数
int gettimeofday(struct timeval *tp, void *tzp)  //错误所在行
{
time_t clock;
struct tm tm;
SYSTEMTIME wtm;
GetLocalTime(&wtm);
tm.tm_year = wtm.wYear - 1900;
tm.tm_mon = wtm.wMonth - 1;
tm.tm_mday = wtm.wDay;
tm.tm_hour = wtm.wHour;
tm.tm_min = wtm.wMinute;
tm.tm_sec = wtm.wSecond;
tm. tm_isdst = -1;
clock = mktime(&tm);
tp->tv_sec = clock;
tp->tv_usec = wtm.wMilliseconds * 1000;
return (0);
}


class timer {

public:
int gettimeofday(struct timeval *tp, void *tzp);
timer(string timer_name) {
name = timer_name;
total_time = 0;
calls = 0;
}

~timer() {}

void tic() {
struct timeval tv;
gettimeofday(&tv, NULL);
last_time = (double)tv.tv_sec + 1e-6*(double)tv.tv_usec;
calls++;
}

void toc() {
struct timeval tv;
gettimeofday(&tv, NULL);
double cur_time = (double)tv.tv_sec + 1e-6*(double)tv.tv_usec;
total_time += cur_time - last_time;
}

const char *msg() {
ostringstream oss;
oss << "timer '" << name
<< "' = " << total_time << " sec in "
<< calls << " call(s)";
return oss.str().c_str();
}

void mexPrintTimer() {
mexPrintf("timer '%s' = %f sec in %d call(s)\n", name.c_str(), total_time, calls);
}

double getTotalTime() {
return total_time;
}

private:
string name;
int calls;
double last_time;
double total_time;
}

#endif


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4548/viewspace-3161651/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-10-08

  • 博文量
    175
  • 访问量
    10708