본문 바로가기
C C++/C언어 기초

C4033 에러: 컴파일러 경고(수준 1)

by Go! Jake 2022. 1. 20.

정의

함수를 사용하면 어떠한 값을 반환해야 한다. 이 때, 함수가 값을 반환하지 않고 정의되지 않은 값이 반환되는 경우이다. void는 예외인데, 맨 아래 설명을 참조하면 된다. 아래는 입력한 값만큼 입력한 값을 입력한 값만큼 반복해서 출력하는 코드이다.

#include <stdio.h>
#pragma warning(disable:4996)

int output(int count)
{
		printf("hi");
		return;         //값이 정의되지 않음.
}


int main(void)
{
	output(3);
	return 0;
}

위와 같은 코드를 실행하는 경우 아래 에러가 발생하게 된다.

warning C4033: 'output'은(는) 값을 반환해야 합니다.

warning C4716: 'output': 값을 반환해야 합니다.

 

C4716은 아래 글에 포함되어 있으니 참조.

C4716 에러: 컴파일러 경고(수준 1) (tistory.com)

 

이는 return; 으로 return 값에 대한 정의가 없기 때문이다. 이 때 return 0으로 수정하면 에러가 발생하지 않는다.

 

 

추가로, return;을 그대로 반환값 정의 없이 사용하고 싶다면 void를 사용할 수 있다.

void output(int count)

#include <stdio.h>
#pragma warning(disable:4996)

void output(int count)
{
		printf("hi");
		return;         //값이 정의되지 않음.
}


int main(void)
{
	output(3);
	return 0;
}

이 경우 함수 반환 형태를 void로 정의하였기 때문에 return 값에 아무 값을 넣지 않아도 에러 없이 종료된다.

 

 

댓글