void input(void *hp, BOOL(*sp)(void *, int));
함수 호출시
input(&hsp, hashInput); 하니깐
Passing argument 2 of from incompatible pointer type에러가 나는데
typedef struct hash CHash;
BOOL hashInput(CHash *, int);
CHash hsp;
이렇게 선언 됐을 때 hashInput이 안 넘어가는 이유는 왜일까욥...
typedef BOOL (*fn)(void *, int); input(&hsp, (fn)hashInput);
f(void*)형이랑 f(BOOL)형이랑 다르잖음
hashInput의 첫번째 인자는 Chash * 타입이지만, input 함수의 두번째 인자로 받는 함수포인터의 첫번째 인자는 void * 이니까 안되는거야. hashInput 함수를 bool hashInput(void *, int) 바꾸거나, input함수를 void input(void *hp, BOOL (*sp)(CHash*, int)) 로 바꾸거나 해야지 뭐.
위에 bool -> BOOL 로...
애초에 저 불러올 함수자체 설계를 처음부터 다시해야겠네 그럼.. 내가 쓰려는 함수들을 모두 같은 구조로 만들어놓고 집어넣어야하는구나 ㄳㄳ 공부많이됐음 앞으로 응용할수있을듯
내가 생각했을때는 저 파라미터 CHash*를 어떤 함수는 Queue*로도 받고 Tree*로도 받고 이러니까 void*로 해놨는데 그냥 sp를 제외한 나머지 전체를 하나의 블럭으로 생각해야하는구나..
ㅇㅇ. 아니면, 첫번째 댓글에 써있는것처럼 형변환해서 써도 됨.