0

早上好,所以-这些已经煮了我的面条了(而且,我很难用谷歌搜索我注意到的 c 编程语言......)

void prepareFrames(PDouble prep){
  int gap = prep->gap;
  printf("Gap is %d\n", gap);
  prep->intFrames = (PFrame*)malloc(gap*sizeof(PFrame));
  PFrame copyFrame = prep->first;
  int i;
  for(i=0; i < gap; i++){
    prep->intFrames[i] = (PFrame)malloc(sizeof(Frame));
    copyFrame(prep->intFrames[i], prep->first, i);          //LINE 189
  }
}

void copyFrame(PFrame new, PFrame copy, int num){
  new->sequence = copy->sequence;
  new->evaluatedFrame = copy->evaluatedFrame + num;
  new->numBoxes = copy->numBoxes;
  new->boxes = (PBox*)malloc(copy->numBoxes*sizeof(PBox));
  int i;
  for(i=0; i < copy->numBoxes; i++){
    PBox old = copy->boxes[i];
    new->boxes[i] = (PBox)malloc(sizeof(Box));
    copyBox(new->boxes[i], old);
  }
}

我收到了这个错误:

error: called object ‘copyFrame’ is not a function

原型与定义相匹配。是什么赋予了?

4

3 回答 3

6

您已copyFrame在该本地范围内重新定义:

PFrame copyFrame = prep->first;
于 2012-06-08T13:41:29.007 回答
1

您已经定义了一个名为 copyFrame 的局部变量:PFrame copyFrame = prep->first;除非 PFrame 由

typedef void (*PFrame)(PFrame new, PFrame copy, int num);

我看不出它应该如何编译。否则,您甚至不使用该copyFrame变量。

于 2012-06-08T13:44:27.163 回答
0

您有一个名为 copyFrame 的变量,它与您的函数名称冲突。

重命名PFrame copyFrame为其他名称,它应该可以工作。

于 2012-06-08T13:42:45.047 回答