被称为对象而不是函数c

早上好 – 这些都是我的面条烹饪了一点(同样,谷歌关于我注意到的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 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 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 

原型符合定义。 是什么赋予了?

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

 PFrame copyFrame = prep->first; 

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

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

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

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

PFrame copyFrame重命名为其他内容,它应该可以正常工作。