이 코드에서 main() 함수 몸체 전에 abc() 함수 선언을 하였습니다. 이는 “abc()라는 함수를 뒤에서 정의하여 사용하겠다!”라고 컴파일러에게 알려주는 것입니다. 만약 이렇게 미리 컴파일러에 함수 선언을 하여 알려주지 않고, 바로 함수를 정의해서 사용한다면 금방 컴파일 오류가 발생할 것입니다.
그 이유는 abc() 함수 정의에 대한 코드에 도달하기 전에 main() 함수에서 abc() 함수를 호출하여 사용하기 때문입니다. 컴파일러가 abc() 함수의 존재를 모르는 상태인데, 이 시점에서 abc() 함수를 사용하려고 하니 에러가 발생하는 것입니다.
그러나 다음 코드처럼 main() 함수 이전에 abc() 함수를 정의하면, 함수 몸체는 함수 선언에 대한 내용을 포함하고 있으므로 함수 선언을 생략해도 됩니다.
function_declare.c
#include <stdio.h> double abc(int x, int y) // 함수 선언과 동시에 정의 { return x + y + 3.14; } main() { int x, y; double z; printf("정수 x의 값 입력: "); scanf("%d", &x); printf("정수 y의 값 입력: "); scanf("%d", &y); z = abc(x, y); printf("z의 값은: %f\n", z); }