F.R.I.D.A.Y.

VS ERROR C6031 : 반환 값이 무시되었습니다. 'function'. 본문

DEV/Tip

VS ERROR C6031 : 반환 값이 무시되었습니다. 'function'.

F.R.I.D.A.Y. 2019. 4. 4. 16:23
반응형

 ※ VS2019 기준으로 작성되었습니다.

#include <stdio.h>

int main(void) {

	int v;
	scanf("%d", &v);

	return 0;
}

 위와 같이 작성하면 다음과 같은 경고가 발생합니다. 경고 수준에 따라 오류로 발생할 수 있습니다.

C6031, C4996 오류

 여기서 C4996 오류는 다음 항목을 참고하세요. 이번 포스트에서는 C6031 오류를 다루겠습니다.

 


원인

 함수 scanf의 반환값을 어딘가에 대입하거나 사용하지 않아서 발생하는 경고입니다. 코드상 문제도 없으며, 단순히 버려지는 값이 있음을 알리기 위해 인텔리센스가 안내하는 내용입니다. 만일 원하는 작업대로 정상 동작 한다면 무시하셔도 됩니다.

 


경고 가리기

 경고를 가리고싶다면 아래 안내를 따라하세요.

Plan1. 프로젝트 속성 수정

 

 상단 [프로젝트 - 속성] 을 눌러 속성 창을 엽니다.

 왼쪽 탭에서 [ C/C++ - 고급] 메뉴를 엽니다. 이 때, [C/C++]메뉴는 *.c 혹은 *.cpp 파일이 하나 이상 프로젝트에 포함되어있어야합니다.

 [특정 경고 사용 안 함] 메뉴에 가리고자 하는 경고 번호를 입력하세요. 여기선 6031을 입력해주시면 됩니다.

 이렇게 작성하고 확인을 눌러도 아래 이미지와 같이 자동으로 업데이트가 되지 않습니다. 이 때에는 인텔리센스를 초기화 해주거나 빌드 작업(Ctrl + Shift + B)을 통해 업데이트 해주면 됩니다. 참고로 인텔리센스 초기화나 빌드를 진행하더라도 오류 목록에서 바로 사라지지는 않았습니다. 기다리고 있으면 알아서 사라지는 듯 합니다.

Plan2. 반환 값을 저장하기

 scanf(scanf_s), printf(printf_s) 함수 등을 사용하는데 C6031 오류가 발생한다면 아래처럼 값을 아무 변수 하나를 만들어 저장해도 됩니다. 물론 메모리 낭비가 되겠지만요.

#include <stdio.h>

int main(void){
    int num;
    
    int temp = scanf("%d", &num);
    
    printf("num: %d\n", num);
    
    return 0;
}

 

Plan3. 코드로 숨기기

 해당 포스트를 참고하세요

 

pragma disable vs pragma suppress

 경고 예외 처리를 위해 코드상에 #pragma warning() 시리즈를 작성할 때가 있습니다. 괄호 안에 disable과 suppress가 들어갈 수 있는데, 두 경우는 어떤 경우에 사용되는지 알아보겠습니다. #pragma?  컴

pang2h.tistory.com


 그나저나 VS2019에선 기본 옵션으로 C6031이 표시가 되니 조금 불편하네요.

# index

728x90
반응형
Comments