Home 비쥬얼 스튜디오 Visual Studio C4996 scanf 에러 해결 방법
Post
Cancel

비쥬얼 스튜디오 Visual Studio C4996 scanf 에러 해결 방법

마이크로소프트 비쥬얼 스튜디오 13버전 이상에서 scanf를 그냥 사용하시면 다음과 같은 에러와 함께 컴파일러 실패를 합니다.

1
2
error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
오류 C4996: 'scanf': 이 함수 또는 변수는 안전하지 않을 수 있습니다. 대신 scanf_s를 사용하는 것이 좋습니다. 지원 중단을 비활성화하려면 _CRT_SECURE_NO_WARNINGS를 사용하세요.

scanf는 보안상의 문제 때문에 scanf_s 사용하는 것을 권장하는데요 하지만 교재나 공부자료가 오래된 것이 많아서 지금 당장은 scanf를 사용하는 편이 편할 수 있습니다. 해결하는 방법은 에러를 죽이고 그대로 실행하면 됩니다.

에러 해결 방법 정리

1. #define _CRT_SECURE_NO_WARNINGS 입력

1
2
3
#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS

코드 헤더부분에다가 stdio.h같은 라이브러리를 불러올때 define으로 _CRT_SECURE_NO_WARNINGS를 지정을 해줍시다.

2. SDL검사를 안 한다 설정

setting

프로젝트의 속성을 들어가신 다음

img1 daumcdn

C/C++ > 일반 > SDL 검사에서 아니오(/sdl-)을 체크를 해줍시다.

img1 daumcdn

그리고 C/C++ > 전처리기에 들어가셔서

전처리기 정의에다가

1
<_CRT_SECURE_NO_WARNINGS>

를 뒤에다가 추가해주시면 됩니다. 다만 앞뒤에다가 세미콜론 ; 을 붙이셔야 합니다. ;_CRT_SECURE_NO_WARNINGS; 가 되겠네요

여기까지 하시면 보통 정상적으로 scanf를 사용하고도 컴파일러가 잘 실행이 될것입니다.

아래는 그래도 작동이 안된다면 한번 해보시면 됩니다.

3. 솔루션 프로젝트를 만들 때 SDL검사 체크 해제하기

img1 SDL check

4. #pragma warning(disable : 4996) 추가

1
#pragma warning(disable : 4996) 

pragma warning

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.

동적할당과 정적할당 차이 정리 (malloc, free) 함수 사용법

scanf 입력 버퍼 지우기, 초기화 하는 방법