C언어 함수 정의와 함수 원형
C 언어에서는 함수를 사용하기 전에 해당 함수의 원형(prototype)을 먼저 선언해야 합니다. 이는 컴파일러에게 함수가 어떤 형태인지 알려주는 역할을 합니다. 그렇지 않으면 컴파일러가 해당 함수를 찾지 못하고 오류가 발생할 수 있습니다.
함수 원형은 함수의 이름과 매개변수의 타입과 개수를 포함하고 있습니다. 원형을 작성하면 컴파일러는 해당 함수를 인식하고, 원형에 맞는 매개변수를 전달하여 함수를 호출할 수 있게 됩니다.
일반적으로 함수 원형은 함수 정의보다 먼저 작성합니다. 이는 함수를 호출하기 전에 미리 함수의 원형을 알려줌으로써 코드의 가독성을 높이고 오류를 방지하기 위함입니다.
그런데 함수 정의가 함수 원형보다 앞에 있는 경우에는 별도의 함수 원형 선언이 필요하지 않습니다. 함수 정의를 먼저 작성하면 컴파일러가 해당 함수를 인식하고, main 함수에서 함수를 호출할 수 있게 됩니다.
C언어 함수 원형
#include <stdio.h>
void myFunction(); // 함수 원형
int main() {
myFunction(); // 함수 호출
return 0;
}
void myFunction() { // 함수 정의
printf("Hello, World!");
}
예를 들어, 다음과 같은 코드를 살펴보겠습니다:
위의 예시 코드에서는 함수 원형을 먼저 작성하고, main 함수에서 해당 함수를 호출합니다. 그리고 int main()함수 아래에 함수 정의가 이어집니다. 이렇게 함수 원형과 함수 정의를 구분하여 작성하면 main()함수 아래에있는 함수 정의도 컴파일러가 함수를 올바르게 인식할 수 있습니다.
C언어 함수 상단정의
#include <stdio.h>
void myFunction() { // 함수 정의
printf("Hello, World!");
}
int main() {
myFunction(); // 함수 호출
return 0;
}
하지만 위의 코드처럼 함수 정의가 함수 호출보다 앞에 있는 경우에는 별도의 함수 원형 선언은 필요하지 않습니다. 함수 정의를 위로 올리면 함수를 호출하기 전에 이미 함수의 형태가 컴파일러에게 알려져 있기 때문에 컴파일러가 함수를 인식할 수 있습니다. 따라서, 함수 정의를 위로 올리면 함수를 호출하기 전에 이미 함수의 형태가 컴파일러에게 알려져 있으므로 별도의 함수 원형 선언이 필요하지 않습니다.
결론
함수 원형과 함수 정의의 순서는 코드의 가독성 측면에서 중요합니다. 보통 함수를 호출하는 main 함수가 상단에 위치하고, 해당 함수의 정의가 그 아래에 이어지는 것이 일반적인 작성 스타일입니다. 이렇게 함으로써 코드를 읽는 사람들이 함수 호출과 정의의 관계를 명확히 파악할 수 있습니다.