Я пытаюсь передать указатели на два struct timevals
функции, которая будет выводить прошедшее время между ними в программе на Си.Однако, даже если я разыменую эти указатели, nvcc выдает ошибку «выражение должно иметь тип класса» (это программа CUDA).Вот соответствующий код из main ():
struct timeval begin, end;
if (tflag) { HostStartTimer(&begin) };
// CUDA Kernel execution
if (tflag) { HostStopTimer(&begin, &end); }
И определение функции для HostStopTimer ():
void HostStopTimer(struct timeval *begin, stuct timeval *end) {
long elapsed;
gettimeofday(end, NULL);
elapsed = ((*end.tv_sec - *begin.tv_sec)*1000000 + *end.tv_usec - *begin.tv_usec);
printf("Host elapsed time: %ldus\n", elapsed);
}
Строка, вызывающая ошибку, является присвоением elapsed
.У меня нет большого опыта использования структур в C, а тем более передачи указателей на структуры в функции, поэтому я не уверен, что является причиной ошибки.