-5
#ifdef WIN32
#else
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <conio.h>
#include <stdio.h>
#include <sys/timeb.h>
#include <time.h>
#include <conio.h>
#include <unistd.h>
#endif

int main()
{
 long time_ms;
#ifdef WIN32
struct _timeb timebuffer;
_ftime( &timebuffer );
time_ms = (long)timebuffer.time * 1000 + (long)timebuffer.millitm;
printf("Windows timing %ld", time_ms);

#else
struct timeval t1;
struct timezone tz;
gettimeofday(&t1, &tz);
time_ms = (t1.tv_sec) * 1000 + t1.tv_usec / 1000;
    printf("Other timing %ld", time_ms);
 #endif
//    return time_ms;
}`

错误: 在此处输入图像描述

这是完整代码的一部分,但是当我单独运行时遇到相同的错误,无法找到解决方案。我附上了错误屏幕截图

4

1 回答 1

0

gettimeofday不会给你 CPU 花费在进程上的时间,它会给你在现实世界中的实时时间。你想要的是clock. 这将告诉您程序已使用的处理时间。它是一个标准的 ISO C 函数,应该适用于任何 C 编译器。

请注意,它返回的值以时钟滴答为单位。要获得秒数,您必须将其除以 CLOCKS_PER_SEC。

#include <stdio.h>
#include <time.h>

int main(void) {
    clock_t cpu_time;

    for( int i = 1; i <= 10; i++ ) {
        cpu_time = clock();

        printf("CPU time used since program start is: %d clocks or %f seconds\n",
               (int)cpu_time,
               (float)cpu_time / CLOCKS_PER_SEC
        );
    }
}
于 2015-11-23T20:20:28.477 回答