C语言中CLK_TCK为何在vs code中显示错误?
#include<stdio.h>
#include<time.h>
void printN(int n);
clock_t start, stop;
double duration;
int main(){
start = clock();
//function
int n = 100;
//scanf("%d",&n);
printN(n);
printf("\n");
//
stop = clock();
duration = ((double)(stop-start))/CLK_TCK;
printf("duration=%lf\n",duration);
return 0;
}
void printN(int n){
if (n)
{
printN(n-1);
printf("%d ",n);
}
}
【以下回答由 ChatGPT 生成】
问题的原因是CLK_TCK
被视为一个未定义的标识符,因此编译器无法识别它。CLK_TCK
是一个过时的符号,在C语言的旧版本中用于计算CPU时钟周期(一秒内的时钟滴答次数)的常量。
在新版本的C语言中,应使用CLOCKS_PER_SEC
常量来代替CLK_TCK
。
为了解决这个问题,您需要将代码中的CLK_TCK
替换为CLOCKS_PER_SEC
。
#include <stdio.h>
#include <time.h>
void printN(int n);
clock_t start, stop;
double duration;
int main(){
start = clock();
//function
int n = 100;
//scanf("%d",&n);
printN(n);
printf("\n");
stop = clock();
duration = ((double)(stop-start))/(double)CLOCKS_PER_SEC;
printf("duration=%lf\n",duration);
return 0;
}
void printN(int n){
if (n)
{
printN(n-1);
printf("%d ",n);
}
}
这样修改后,您的代码应该可以正确编译和运行,而不会显示该错误。
CLK_TCK在 turbo c 里才有,gcc里没有