69.8 심사문제: 인적 정보 출력하기
, 임 현태님이 작성void (*getPrintFunc(struct Person *p))(struct Person *)와 같이 함수를 만들어주고, 함수 안에서는 구조체 포인터 p의 멤버 print를 반환해주면 됩니다.
와 같이 해설이 나왔는데 저는 int 로 반환을 하였을 때 심사를 통과 하였습니다.
놓치는 부분이 있어 운 좋게 통과 되었다면, 어디를 놓쳤는 지 알고 싶습니다.
문의한 코드는 삭제합니다.
(도장_ 관리자님이 수정함 - 원문 제출일: 2020년 2월 3일, 월요일, 오후 10:15)
Re: 69.8 심사문제: 인적 정보 출력하기
, 도장_ 관리자님이 작성반환값을 사용하지 않는 문제이므로 반환값은 어떻게 선언되어도 동작합니다.
하지만, 데이터형을 정확하게 맞추는 게 가장 좋습니다.
executer에서 원하는 함수의 타입과 불일치하기 때문에 다음과 같이 경고가 표시됩니다.
main.c:27:12: warning: incompatible function pointer types returning 'void (*)(struct Person *)' from a function with result type 'int (*)(struct Person *)' [-Wincompatible-function-pointer-types] return p->print; ^~~~~~~~ main.c:48:15: warning: incompatible function pointer types assigning to 'void (*)(struct Person *)' from 'int (*)(struct Person *)' [-Wincompatible-function-pointer-types] fp[i] = getPrintFunc(&p[i]); ^ ~~~~~~~~~~~~~~~~~~~ 2 warnings generated.C 언어에서는 경고를 에러로 간주하고, 경고가 안 나오게 코딩하는 게 중요합니다.
가능하면 경고 없는 클린 코드로 작성하세요.