이 오류는 반환형이 void인 함수를 연산식 또는 대입문에 사용하려 할 때 발생합니다. void 함수는 값을 반환하지 않으므로, 그 결과는 변수에 저장하거나 다른 값과 연산에 사용할 수 없습니다.
특히 printf와 같은 함수 안에 void 함수를 넣거나, void 함수의 결과를 대입하려 할 때 자주 발생합니다.
● 오류 예제
#include <stdio.h>
void greet() {
printf("Hello\n");
}
int main() {
int x = greet(); // 오류: void 함수는 값을 반환하지 않음
return 0;
}
또는 다음과 같이 void 함수의 결과를 연산에 사용하려고 하면 오류가 발생합니다.
int y = greet() + 1; // 오류 발생
컴파일러는 다음과 같은 오류 메시지를 출력합니다.
error: invalid use of void expression
● 해결 방법
void 함수는 단순히 실행만 하고 값을 반환하지 않기 때문에, 반드시 독립적으로 호출해야 합니다.
#include <stdio.h>
void greet() {
printf("Hello\n");
}
int main() {
greet(); // 올바른 호출 방식
return 0;
}
출력 결과:
Hello
● 실전 팁
- void 함수는 단독 호출만 가능하며, 그 결과를 다른 연산이나 대입에 사용할 수 없습니다.
- void 함수를 쓰는 이유는 단순히 동작을 수행하고 결과를 반환하지 않는 구조가 필요하기 때문입니다.
- 값을 필요로 하는 연산에는 반드시 값을 반환하는 함수나 상수를 사용하세요.
C언어에서는 함수의 반환값 타입에 따라 그 사용법이 명확히 구분되므로, void 함수의 결과를 잘못된 방식으로 사용하는 실수를 피하고, 독립적인 호출 구조를 유지하는 것이 중요합니다.