728x90
이 오류는 반환형이 void가 아닌 함수에서 return 문이 존재하지 않거나, 모든 실행 경로에서 값을 반환하지 않을 때 발생합니다. C언어에서는 int, char, float 등 값을 반환하는 함수는 반드시 return 문을 통해 그 값을 반환해야 하며, 그렇지 않으면 컴파일러는 함수가 명시된 반환형을 충족하지 않는다고 판단합니다.
특히 조건문 내부에서만 return을 하고 일반 흐름에서는 누락된 경우에도 이 오류가 발생할 수 있습니다.
● 오류 예제
#include <stdio.h>
int get_value() {
int x = 10;
// return 누락
}
int main() {
int val = get_value();
printf("Value: %d\n", val);
return 0;
}
컴파일 시 다음과 같은 오류 메시지가 출력됩니다.
error: non-void function does not return a value
● 해결 방법
반환형이 있는 함수는 반드시 return 문을 통해 값을 반환해야 하며, 모든 경로에서 반환이 보장되도록 작성해야 합니다.
#include <stdio.h>
int get_value() {
int x = 10;
return x;
}
int main() {
int val = get_value();
printf("Value: %d\n", val);
return 0;
}
출력 결과:
Value: 10
● 실전 팁
- 모든 return이 조건문 내부에 있을 경우, else 없이 return이 빠지는 경로가 없는지 확인하세요.
- void가 아닌 함수는 반드시 return 값을 포함해야 합니다.
- 컴파일러 경고를 활성화하여 return 누락 가능성을 조기에 탐지하세요.
C언어에서 함수의 반환 타입은 매우 중요하며, 반환형이 정의되어 있음에도 return을 하지 않으면 실행 중 예기치 못한 동작이나 정의되지 않은 값이 발생할 수 있습니다. return 문을 항상 명확하게 작성하는 습관을 들이세요.
728x90