函数调用结构错误

时间:2014-04-29 01:37:17

标签: c

我目前在尝试找出涉及使用结构a和结构b的函数的代码的某个部分的错误时遇到了问题

RectT a, b, recs[50];
int acount, bcount;
....

....
/* checks to see if the chk_overlap function returns a 1, if it does it adds 1 to bcount and acount */
if(chk_overlap(recs, a) == 1)
{
  bcount++;
}
if(chk_overlap(recs, b) == 1)
{
  acount++;
}

被调用的函数是

int chk_overlap(RectT *r1, RectT *r2){}

,结构是

typedef struct rect
{
  int x;
  int y;
  int w;
  int h;
}RectT;

取消内部代码,因为这是一项家庭作业

目前的错误是让我得到的是

gcc -Wall -g -ansi -o xtst rec02.c
rec02.c: In function 'main':
rec02.c:64: error: incompatible type for argument 2 of 'chk_overlap'
rec02.c:69: error: incompatible type for argument 2 of 'chk_overlap'

2 个答案:

答案 0 :(得分:2)

chk_overlap()接受两个RectT *。因此,您可以将其称为

if(chk_overlap(recs, &a) == 1)

请注意&运算符,该运算符的地址为a

答案 1 :(得分:1)

你声明函数指向该结构的指针,但在代码中,你试图传递非指针,但结构本身,作为一个值。 你应该致电:

chk_overlap(recs, &b)