c언어 프로그래밍 함수의 위치
c언어 프로그래밍 함수의 위치
■ 프로그램은 위에서 아래로 왼쪽에서 오른쪽으로 실행되는 게 기본인데요. 일반적으로 호출할 함수도 앞쪽에 만들어져 있어야 컴파일러가 위쪽에서 먼저 읽고 오기 때문에 나중에 그 함수를 호출해도 앞에서 본 녀석이라고 인식하고 문제 없이 불러오게 되는데요. 다음과 같은 형식입니다.
▲ 두 수를 전달받아서 더한 후 그 값을 출력하는 hap() 함수를 정의하고 main() 에서 hap()을 호출하고 있는데요. hap()이 앞쪽에 있기 때문에 당연히 아무 문제없이 제대로 실행되는 프로그램입니다.
하지만 반대로 main()이 먼저 정의되고 hap()이 나중에 정의된다면 어떻게 될까요? 바꿔서 컴파일 해보겠습니다.
▲ 이렇게 main()이 먼저 오고 호출할 hap()이 뒤쪽에 위치하게 되면 컴파일 에러가 발생하게 되는데요.
▲ hap()이 정의되어 있지 않다고 에러가 발생합니다. main()에서 호출하려고 보니... 컴파일러가 위에서 내려오면서 hap()을 본 적이 없는 겁니다. 그렇기 때문에 호출할 함수를 먼저 정의해야 합니다.
그런데 이 hap()을 뒤쪽에서 정의해도 컴파일러에게 hap()이라는 함수가 뒤쪽에 있으니까 확인해서 불러와라는 의미로 다음과 같은 문장을 선언해주면 에러 없이 컴파일이 됩니다.
void hap(int x, int y);
반환형 및 매개변수를 동일하게 main() 함수 앞쪽에 입력해주면 됩니다. 예제에 적용해볼게요.
▲ 컴파일러에게 void hap(int x, int y)라는 함수가 뒤쪽에 있으니까 확인해봐라는 문장을 입력해주면.... 호출할 함수가 뒤쪽에 있어도 아무 문제없이 실행됩니다.
이렇게 해서 함수의 위치에 대해서 알아봤습니다. 수고하셨어요.