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

VS ERROR C4996 : This function or variable may be unsafe(SDL 오류) 본문

DEV/Tip

VS ERROR C4996 : This function or variable may be unsafe(SDL 오류)

F.R.I.D.A.Y. 2018. 10. 1. 12:02
반응형

 오늘은 scanf() 함수와 같이 입출력 함수, 문자열 함수를 다룰 때 종종 발생하는 C4996에 대해 다뤄봅니다.


원인

 원래는 문제없이 컴파일되는 것이 맞지만, scanf() 등의 함수에서 발생 가능한 잠재적 문제점으로 인해 MSVC에 이 함수들을 사용하지 못하도록 강제하는 설정(SDL, Security Development Lifecycle)이 활성화되어 사용하지 못하는 것입니다.


해결

 아래 두가지 방법으로 해결할 수 있습니다.

 

Plan1. 코드 상단에 전처리 코드 작성

 아래 두 줄의 코드 중, 하나만 작성하면 됩니다.

#pragma warning(disable:4996) // MSVC 전처리 코드

#define _CRT_SECURE_NO_WARNINGS

 

Plan2. 프로젝트 설정 변경

 다음 방법을 따라하세요.

 상단 메뉴의 프로젝트 - 속성(P)을 눌러 속성 창을 엽니다.

 왼쪽의 C/C++ - 일반 메뉴에서 SDL 검사 항목을 아니요(/sdl-)로 바꿔줍니다.

 간혹 C/C++ 탭이 없을 수도 있는데, 이 때는 프로젝트에 C/C++ 소스코드 파일이 하나 이상 존재하는지 확인해보세요. MS 포럼에서 찾아보니 소스코드 파일이 없으면 활성화가 안되는 듯 합니다. 링크


읽을거리

 이 글에서 알린 scanf를 바로 사용할 수 없는 이유에 대해 작성한 글입니다.

 

scanf()의 문제점

VS ERROR C4996 : SDL 오류 오늘은 scanf() 함수와 같이 입출력 함수, 문자열 함수를 다룰 때 종종 발생하는 C4996에 대해 다뤄봅니다. 원인 원래는 문제없이 컴파일되는 것이 맞지만, scanf() 등의 함수에서 발생..

pang2h.tistory.com

# index

728x90
반응형
Comments