정의
함수를 사용하면 어떠한 값을 반환해야 한다. 이 때, 함수가 값을 반환하지 않고 정의되지 않은 값이 반환되는 경우이다. 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 값에 아무 값을 넣지 않아도 에러 없이 종료된다.
'C C++ > C언어 기초' 카테고리의 다른 글
C언어 for 반복문의 모든 것 (2) | 2022.03.20 |
---|---|
C언어 while 반복문의 모든 것 (feat. while문 예시, do~while문) (0) | 2022.03.20 |
C4716 에러: 컴파일러 경고(수준 1) (0) | 2022.01.20 |
C언어 #8 - 상수 (int, double, 접미사, const) (0) | 2022.01.01 |
C언어 #7 - 자료형의 이해 (int, long, float, double, char, short, long long) (0) | 2022.01.01 |
댓글