C/C++ 언어는 무엇이든 사용하기 전에 선언이나 정의가 필요합니다.
main()함수 에서 butler()이라는 함수를 사용하는데, 이것은 실제로는 뒤에서 정의되고 있습니다.
그래서 main()에서는 이 녀석이 어떤 것인지 모르는 거지요. 그래서 에러를 냅니다.
또한 생략하는 경우 기본적으로 int로 생각하는 경향이 있습니다.
여기서 main()과 butler() 이란 함수는 int main(), int butler()로 생각하게 됩니다.
그래서 두번째의 warning(경고)인 함수의 리턴값이 없다고 나옵니다.
해결방안은 단순히 butler()함수를 main()위로 위치 이동하거나
정의 보다 선언을 먼저 해주는 형태로 main()함수 이전에 bulter(); 이라고 선언해주시면 됩니다.
경고문구는 함수의 끝부분에 return 0; 이라고 추가하시면 됩니다.
C++ 컴파일러라면 명시적으로
void 키워드를 쓸 수 있으므로 리턴값이 없다고 void main(), void butler()이라고 적으시면 됩니다.
영문 메시지가 나온다고 어려워하실 필요는 없습니다.
이미 알려진 영문 메시지들은 다 해석된 형태로 올려져 있으니 그걸 참고하시면 되고,
조금 익숙해지면 어떤 경우란 게 영문 해석하지 않아도 자연히 알게 됩니다.
또한 메시지는 매번 맞다고도 볼 수는 없습니다.
위쪽 라인에서 틀린 경우 아래 라인에서 다른 에러의 메시지가 나오는 경우도 많으니까요...
쇼우스 님이 쓰신 글 :
: 음.. 제가 c언어 공부를 시작한지 얼마 안된 초보입니다..
: 제가 사는곳에 가르치는 학원이 없어 독학을 하는데 독학으론 질문할 사람도 같이할사람도 없이
: 하려니 많이 힘들군요...
: 책을 두권사서하는데 예제가 제목이 함수의 호출 이었는데요
:
: 1 #include <stdio.h>
: 2 main()
: 3 {
: 4 printf("I will summon the butler function.\n");
: 5 butler();
: 6 printf("yes. bring me some tea and floppy disks.\n);
: 7 }
: 8
: 9 butler()
: 10 {
: 11 printf("you rang, sir?\n");
: 12 }
:
:
: 저장하니 메세지에
:
: error : CPP5 :Function 'butler' should have a prototype
: warning : CPP7 : Function should return a value
: warning : CPP12 :Function should return a value
:
: 뜨는군요.. 영어 실력도 좋지않은지라.. 해결하기가 힘들더군요..
: 해결 부탁드립니다...
|