AngelPlayer`s Diary


Visual Studio 2010 이상의 최신버전에서는 scanf()를 사용하여 컴파일을 하면 버전에 따라 간간히 scanf()를 사용할 수 없다는 오류를 띄웁니다. (제 컴퓨터를 기준으로 동일한 Visual Studio 2017이지만 1분기에 설치한 VS는 실행이 잘 되고 3분기에 설치한 VS는 제대로 되지 않는 현상이 나타납니다.)



오류내용을 간단히 정리하자면 scanf()가 안전하지 못하니 scanf_s()를 사용하던지, 혹은 _CRT_SECURE_NO_WARNINGS를 사용하라고 권고합니다.

 

오늘은 scanf_s()를 사용하지 않고(scanf_s()를 무시) 컴파일을 할 수 있게 만드는 방법 두 가지를 간단히 알려드리고자 합니다.

 



1. 전처리기 설정 변경하기(#define_CRT_SECURE_NO_WARNINGS)


먼저 전처리기의 설정을 바꾸는 방법을 알려드리도록 하겠습니다.

 

우선 상단 메뉴바에서 [디버그] - [‘프로젝트 명속성..]을 클릭합니다.

 


그러면 위의 화면이 나타납니다. 위 화면에서 [구성 속성] - [C / C++] - [전처리기]로 들어갑니다.

 


해당 페이지에서 [전처리기 정의]를 수정해야하는데, 대부분 이미 다른 값이 들어가 있을 것입니다. 그런 경우

 

;_CRT_SECURE_NO_WARNINGS

 

을 전처리기에 입력된 값 바로 뒤에 작성해 주시면 됩니다.

 


확인을 누르고 컴파일하면 실행이 잘 되는 것을 확인 하실 수 있습니다.


작업이 다소 귀찮지만 한 번 설정을 변경하면 따로 코드를 넣거나 설정을 다시 변경할 필요없이 다른 작업에서도 scanf_s오류가 뜨지 않는다는 장점이 있습니다.

 


2. 코드 내 명령문 삽입하기


전처리기 설정을 변경하기 싫으신 분은

 

#pragma warning(disable:4996)

 

라는 명령문을 코드 내에 삽입 하시면 됩니다.

 


매번 명령문을 삽입해야하는 번거로움이 있긴 하지만 설정 등을 바꾸기를 꺼려하거나, 평소에는 scanf_s()를 사용하는데 그렇지 않은 코드를 컴파일 해야하는 경우 사용하시면 될 것 같습니다.

 

scanf_s() 문제 잘 해결하시고 즐거운 프로그래밍 되세요~!





공유하기

facebook twitter kakaoTalk kakaostory naver band