2013-11-04 51 views
0

我试图测量它需要我的程序在循环中执行多个操作,整个程序是用C写的,我使用的方法,从这个职位的时间:时间测量用C

C# vs C - Big performance difference

但是,当我尝试在clock()的声明行上执行该方法时,出现错误:在函数main中错误地使用了typedef符号。

包含头文件并不会导致任何错误。这是用于MS-DOS的TurboC编译器中编写的一个16位C程序。我不确定它使用的是哪个版本的C,但我认为它很可能是C89或C的早期版本之一。我不知道这是否会导致任何语法差异?

下面是我使用的代码:

clock_t start = clock(); 
while(count < 10000) 
{ 
    count++; 
} 
printf("Time elapsed: %f\n", ((double)clock() - start)/CLOCKS_PER_SEC); 

和错误是完全按照我上面提到的。

+0

请发表您的代码 –

+0

后实际的错误信息和/或尝试使用编译器,比方说,在过去10年,而不是古代的,易怒的,非标准的Turbo C. –

+0

这种特殊的程序需要对被写入16位MS-DOS计算机,因此,我必须使用MS-DOS支持的编译器。据我所知,TurboC是最好的,除非有一个更好,更标准的MS-DOS编译器? – Generalkidd

回答

2

在老式的16位C中,您可能应该使用time_t和time()函数。自从电子邮件发明以来,它们一直用于此目的。

如果你这样做,你的代码将在2038年的某个时候死亡。 http://en.wikipedia.org/wiki/Year_2038_problem

#include <time.h> 
time_t start = time(); 
/* do a bunch of stuff */ 
time_t stop = time(); 
unsigned long int elapsedSeconds = stop - start; 

如果出现错误使用time_t声明,尝试unsigned long int代替。

+0

我用time_t试过了,但仍然得到了相同的typedef错误。如果我将它们切换为其他变量类型,如unsigned long int,则会出现一个新错误:“函数main中的表达式语法”。事实上,我注意到,如果我甚至尝试使用//注释代码,我仍然会得到相同的表达式语法错误。 – Generalkidd