그래서 3 개의 파일이 있습니다. main.c를, file.c는의 file.h file.h에서C extern clock_t 변수가 파일에서 예상대로 작동하지 않습니다.
나는 3 개 변수
file.c는에extern clock_t start_t, end_t, total_t;
내가 주요 실행중인 프로그램의 시간을 저장하는 함수를 썼다 선언; 및 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_t start_t = clock(); 마지막에 및 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
감사합니다. Barmar, 어떻게 볼 수 없습니까? –