C extern clock_t переменные не работают должным образом в файле;
Итак, у меня 3 файла; main.c, file.c file.h
в файле.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)
Кстати, я думаю, чтобы начать отсчет часов и начало основного и просто сделать математику в функции. У меня вопрос, почему это не работает? Как еще я должен использовать clock_t
переменные? Я попытался провести некоторое тестирование с помощью int, и, похоже, на него ссылались просто отлично.
1 ответ
Я узнал, чего мне не хватало; Я забыл определить переменные в файле, который содержит main()
(хотя любой другой исходный файл мог бы определить их вместо этого, если только один файл определяет их, и объектный код для этого файла связан, когда программа связана).