C语言中CLK_TCK为何在vs code中显示错误?

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里没有