0
所以我有3個文件; main.c中,file.c file.hC extern clock_t變量在文件中未按預期工作;
在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);
}
}
在主我寫start_t =時鐘開始main.c中(); 並在最後寫道:atexit(savelog)
我包括(在所有文件time.h中,文件stdlib.h,stdio.h中)所有的庫
編譯時出現錯誤鏈接蘋果ID錯誤
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的測試,似乎被引用就好了。
如果沒有[完整獨立示例](http://stackoverflow.com/help/mcve),不容易發現什麼是錯誤的。另外:在文本文件中使用''b「'模式和'fwrite()'是很不尋常的。 –
你有變量的聲明,但沒有定義。 – Barmar
謝謝巴爾瑪,我怎麼看不到它! –