将指针传递给struct到c中的函数时出错

And*_*rew 3 c struct gettimeofday

我正在尝试将指针传递struct timevals给一个函数,该函数将在C程序中输出两者之间的经过时间.但是,即使我取消引用这些指针,nvcc也会抛出错误"表达式必须具有类类型"(这是一个CUDA程序).以下是main()的相关代码:

struct timeval begin, end;
if (tflag) { HostStartTimer(&begin) };
// CUDA Kernel execution
if (tflag) { HostStopTimer(&begin, &end); }
Run Code Online (Sandbox Code Playgroud)

以及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);
 }
Run Code Online (Sandbox Code Playgroud)

导致错误的行是赋值elapsed.我没有太多在C中使用结构的经验,更不用说将结构传递给函数的结构,所以我不确定导致错误的是什么.

Dav*_*own 7

.操作者具有更高的优先级比所述*操作者,所以像表达式*end.tv_sec试图首先评估end.tv_sec(因为这是不可能的end是一个指针),然后解除引用的结果.

你应该使用(*end).tv_secend->tv_sec代替.