kirim6317   3년 전

1436번을 풀다가 gcc컴파일에 대해 궁금한점이 생겨서 질문드립니다.

저는 사소한 오류에 대해서 잡아내고자 gcc -Wall -Wextra -Werror로 컴파일을 하라고 학원에서 배웠습니다. 아직 초보라서 주입식으로 배운 부분이 없지 않아 있습니다.

결과적으로는 gcc로만 컴파일을 했을때는 정상 작동되고 정답 처리 되었습니다.

하지만 gcc -Wall -Wextra -Werror 로 컴파일을 하면 "-Werror=return-type" 라는 오류가 나면서 '"check_num"함수의 return 값을 지정하라고 합니다. 그렇다고 함수 "check_num" 에서

else
      return(0);

부분에서 else를 지우고 return (0);을 밖으로 빼버리면 컴파일은 되는데 재귀함수가 잘 돌지 않는지 실행이 잘 되지 않습니다.

글을 조금 뒤죽박죽으로 써서 결론적으로 궁금한 것을 질문드린다면
1. 재귀함수(?)를 저런식으로 쓰면 안되는지..
2. 아니면 gcc -Wall -Wextra -Werror 를 너무 맹신하지말고 기본적으로 gcc로 컴파일해서 사용해야되는지..

입니다.

kirim6317   3년 전

고민해보다가 이런식으로 "check_num" 함수를 수정하니 gcc -Wall -Wextra -Werror 에서도 컴파일이 잘됬습니다.

그래도 궁금한점은 본문에서 "check_num"에서처럼 재귀를 돌리는 코드는 안좋은 코드일까요??

harinboy   3년 전

아마 13번째 줄이

return check_num(nb / 10, cnt);

이 아니라

check_num(nb / 10, cnt);

이어서 생긴 문제인 것 같습니다.

return 만 까먹지 않는다면 안 좋은 코드라고 전혀 부를 수 없을 것 같습니다!

kirim6317   3년 전

답변 감사합니다. return 명심하겠습니다!

댓글을 작성하려면 로그인해야 합니다.