본문 바로가기
프로그래밍언어/C언어[Error]

[C언어][Error] 046. non-void function does not return a value – return 문 누락

by about_IT 2025. 4. 28.
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