Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[2409] Re:코딩후 컴파일이 되지 않습니다.도와주세요
임문환 [mhlim] 1188 읽음    2003-04-16 06:34
      power(x,y)
      int x,y;
      {
      }
위와 같은 함수 정의는 C에서는 가능했으나 C++에서는 허용되지 않습니다.
C에서 함수 반환형을 명시하지 않으면 int형으로 간주된다는 점을 감안하여 C++에서 허용하는
형태로 바꾸면 아래와 같습니다.
  int power(int x, int y)
  {
  }

그리고, C에서는 함수 원형을 미리 선언해주지 않고도 해당 함수를 사용할 수 있었으나
C++에서는 해당 함수를 사용하기 전에 그 원형을 선언해주어야 합니다.

프로그램 코드를 위에서 밑으로 읽어 나갈 때 해당 함수를 사용하는 곳보다 위쪽에
그 선언이 있어야 한다는 얘깁니다.
그러니까, 보통은 해더 파일에 그 선언을 두고 유닛 파일의 상단에서 그 헤더 파일을 include하는
형식으로 함수 선언을 하게 됩니다.

파일을 include하는 것은 해당 include문이 있는 위치에 include되는 파일의 내용을 옮겨 놓는 것과 같습니다.

선언 방법은 아래와 같습니다.
ReturnType FunctionName([Parameter Type1]...);
즉,  int power(int x, int y);

그런데 지금의 power 함수는 사용하는 위치보다 앞에 그 선언이 없습니다.
그러면 "정의되지 않은 함수를 호출했습니다."라고 컴파일 오류를 알립니다.


위의 사항들을 감안하여 아래와같이 하면 됩니다.
    #include <stdio.h>
    #include <conio.h>

    int power(int x, int y); //함수 원형 선언

    void main()
    {
      int m,k,c;
      m=2;
      for (k=0;k<=10;k++){
       c = power(m,k);
       printf("%d ^ %d=%d\n",m,k,c) ;
      }
    }

    int power(int x, int y)
    {
     return((y== 0) ? 1: x* power(x,y-1));
    }


김종오 님이 쓰신 글 :
:     #include <stdio.h>
:     #include <conio.h>
:     void main()
:
:     {
:       int m,k,c;
:       m=2;
:       for (k=0;k<=10;k++){
:       c = power(m,k);
:
:       printf("%d ^ %d=%d\n",m,k,c) ;
:       }
:
:      
:      }
:      power(x,y)
:      int x,y;
:      {
:      return((y== 0) ? 1: x* power(x,y-1));
:      }
:
:
: 위 코딩을 컴파일하면
: Compiling TEST.CPP:
: Error TEST.CPP 12: Function 'power' should have a prototype
: Warning TEST.CPP 19: Style of function definition is now obsolete
: 와 같이 에러가 나옵니다.
: 어떻게 수정해야 하는지 알려주세요

+ -

관련 글 리스트
2407 코딩후 컴파일이 되지 않습니다.도와주세요 김종오 1129 2003/04/16
2409     Re:코딩후 컴파일이 되지 않습니다.도와주세요 임문환 1188 2003/04/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.