函数指针作为函数参数问题
在网上找了一个统计执行某段代码所需时间的方法,想写成函数,设计后的代码如下:
double get_time() //参数表要为一个函数指针{ LARGE_INTEGER litmp; LONGLONG QPart1,QPart2; double dfMinus, dfFreq, dfTim; QueryPerformanceFrequency(&litmp); dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率 QueryPerformanceCounter(&litmp); QPart1 = litmp.QuadPart;// 获得初始值 /******* 统计部分代码(这里运行函数指针指向的函数) *******/ do { QueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart;//获得中止值 dfMinus = (double)(QPart2-QPart1); dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒 }while(dfTim<0.000001); return dfTim;}
::LARGE_INTEGER liFrequency;::LARGE_INTEGER liStart;::LARGE_INTEGER liEnd;voidStartClock(){ ::QueryPerformanceFrequency(&liFrequency); ::QueryPerformanceCounter(&liStart);}voidEndClock(){ ::QueryPerformanceCounter(&liEnd); std::printf("Painted performed in: %f milliseconds.\n", double(1000 * 1.0 / liFrequency.QuadPart * (liEnd.QuadPart - liStart.QuadPart)));}
[解决办法]
按楼主的描述,则函数必须定义成这样的:
void* function_name(string param1, ...);
[解决办法]
另外,如果觉得void*很丑且不安全,可以考虑用boost库的any类型。