我試圖將指針傳遞給兩個struct timevals
函數,該函數可以在C程序中輸出兩者之間的經過時間。然而,即使我解引用這些指針,nvcc會拋出錯誤「expression must class class」(這是一個CUDA程序)。下面是從main()中的相關代碼:錯誤時,將指針傳遞給結構函數c
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中使用結構體,更不用說將結構體的指針傳遞給函數,所以我不確定是什麼導致了錯誤。
try:elapsed =((end-> tv_sec - begin-> tv_sec)* 1000000 + end-> tv_usec - begin-> tv_usec); – fazo 2011-04-14 22:29:50