gpt4 book ai didi

C extern clock_t 变量在文件中未按预期工作;

转载 作者:行者123 更新时间:2023-11-30 16:52:31 26 4
gpt4 key购买 nike

所以我有 3 个文件; main.c , file.c file.h

在 file.h 中我声明了 3 个变量

extern  clock_t start_t, end_t, total_t;

在file.c中我写了一个函数来保存主运行程序的时间长度;在 file.h 中,我将其引用为“void saveLog(void);”

void saveLog(void)
{
end_t = clock();
total_t = (end_t - start_t);
double time_spent = (double) total_t / CLOCKS_PER_SEC;

double *arr = malloc(sizeof(double));
*arr = time_spent;

FILE* fp = fopen("log.txt","wb");
if (fp)
{
printf("Elapsed: %f seconds\n", (double) time_spent);
fwrite(arr, 1, sizeof(double), fp);
fclose(fp);
}
}

在 main.c 中,在 main 的开头,我写了 start_t =clock();最后写了atexit(savelog)我包含了所有库(所有文件中的 time.h 、 stdlib.h 、 stdio.h )

编译时出现错误 apple linker id error

Undefined symbols for architecture x86_64:
"_end_t", referenced from:
_saveLog in file.o
"_start_t", referenced from:
_check_answer in main.o
_saveLog in file.o
"_total_t", referenced from:
_saveLog in file.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

顺便说一句,我的想法是,开始计算时钟和 main 的开始,然后简单地在函数中进行数学计算。我的问题是,为什么它不起作用?我还应该如何使用 clock_t变量?我尝试使用 int 进行一些测试,似乎引用得很好。

最佳答案

我发现我错过了什么;我忘记在包含 main() 的文件中定义变量(尽管任何其他源文件都可以定义它们,只要只有一个文件定义它们并且该文件的目标代码在该程序已链接)。

关于C extern clock_t 变量在文件中未按预期工作;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41191714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com