프로그래밍언어/C언어[Error]
[C언어][Error] 012. ‘return’ with no value, in function returning non-void – 값을 반환해야 하는 함수에서 return 문 없음
about_IT
2025. 4. 22. 23:29
이 오류는 반환형이 int, float 등 값을 반환해야 하는 함수에서 return 문이 없거나, return 문이 존재하더라도 반환할 값이 없는 경우 발생합니다. C언어에서는 함수의 선언과 정의에서 명시한 반환형에 따라 반드시 적절한 값을 return해야 합니다.
특히 조건문 내에서 일부 분기만 return 값을 포함하고, 다른 분기에는 return 값이 없을 경우에도 이 오류가 발생할 수 있습니다.
다음은 오류가 발생하는 예시입니다.
#include <stdio.h>
int getValue(int flag) {
if (flag)
return 1;
// return 문 없음
}
int main() {
int result = getValue(0);
printf("%d\n", result);
return 0;
}
컴파일러는 다음과 같은 오류 메시지를 출력합니다.
error: ‘return’ with no value, in function returning non-void
아래는 모든 경로에서 값을 반환하도록 수정한 코드입니다.
#include <stdio.h>
int getValue(int flag) {
if (flag)
return 1;
else
return 0;
}
int main() {
int result = getValue(0);
printf("%d\n", result);
return 0;
}
출력 결과:
0
● 실전 팁
- non-void 함수는 모든 실행 경로에서 반드시 값을 반환해야 합니다.
- 조건문이나 반복문 안에 return을 사용할 경우, 모든 분기에서 값을 반환하는지 확인하세요.
- 컴파일러의 경고를 활성화하면 누락된 return 경로를 미리 확인할 수 있습니다.
반환형이 있는 함수에서는 return을 단순히 종료용으로 쓰는 것이 아니라, 반드시 명시된 타입의 값을 반환해야 함을 기억해야 합니다.