|
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
: 와 같이 에러가 나옵니다.
: 어떻게 수정해야 하는지 알려주세요
|