이 오류는 반환형이 void인 함수에서 return문을 사용할 때, 값을 함께 반환하려고 할 경우 발생합니다. void 함수는 값을 반환하지 않는 함수이므로, return 문에는 아무 값도 포함되지 않아야 합니다.
반환형이 void인 함수에 return 뒤에 값을 넣으면 컴파일러는 이 동작이 잘못되었다고 판단하고 오류를 발생시킵니다.
다음은 오류가 발생하는 잘못된 예시입니다.
#include <stdio.h>
void greet() {
return 1; // 오류: void 함수는 값을 반환할 수 없음
}
int main() {
greet();
return 0;
}
컴파일 시 다음과 같은 오류가 출력됩니다.
error: ‘return’ with a value, in function returning void
정상적인 코드는 다음과 같습니다.
#include <stdio.h>
void greet() {
printf("Hello!\n");
return; // 값을 반환하지 않음
}
int main() {
greet();
return 0;
}
출력 결과:
Hello!
● 실전 팁
- 반환값이 있는 return 문은 반드시 int, char 등 반환형이 있는 함수에서만 사용하세요.
- void 함수에서는 return;만 사용하거나 생략할 수 있습니다.
- 컴파일러의 반환형 경고를 무시하지 말고, 함수의 시그니처와 일치하도록 작성하세요.
반환형에 맞지 않는 return 문은 흔히 발생하는 실수이므로, 함수 작성 시 반드시 void인지 반환형이 있는 함수인지 구분하여 return을 사용하는 것이 중요합니다.