C 언어에서는 함수를 선언할 때 반환 유형(return type)을 명시하지 않으면, 컴파일러가 자동으로 int를 반환 유형으로 간주합니다. 이를 암시적(implicit) 반환 유형이라고 부릅니다.
암시적 반환 유형의 기본 개념
함수 정의 시 반환 유형이 생략되더라도 컴파일 오류가 발생하지 않으며, 해당 함수는 int 값을 반환하는 것으로 처리됩니다. 다만, 이러한 방식은 코드의 가독성과 명확성을 떨어뜨릴 수 있어 현대 C 프로그래밍에서는 권장되지 않습니다.
C99 표준부터의 변경 사항
C99 표준부터는 반환 유형이 int인 경우라도 이를 생략하는 것이 허용되지 않습니다. 즉, 모든 함수는 반드시 반환 유형을 명시적으로 작성해야 하며, 그렇지 않으면 컴파일 경고나 오류가 발생할 수 있습니다.
예제 코드
#include<stdio.h>
my_function(int x) {
return x * 2;
}
main(void) {
printf("Value is: %d", my_function(10));
}위 예제에서 my_function은 반환 유형이 명시되지 않았지만, C89 규칙에 따라 int를 반환하는 함수로 해석됩니다.
실행 결과
Value is: 20
정리
- 반환 유형이 없는 함수는 암시적으로
int를 반환 유형으로 가집니다(C89까지). - 반환 유형이 생략되어도 컴파일 오류는 발생하지 않습니다.
- C99부터는 반환 유형 생략이 허용되지 않으므로, 항상 명시적으로 작성하는 것이 좋습니다.