본문 바로가기

컴맹 탈출기

VS #define _CRT_SECURE_NO_WARNINGS 오류

VS(Visual Studio)로 코딩하다보면 위와 같은 오류가 뜬다.

 

예전에 컴공 새내기일때 선배들한테 이런거 떴는데 어떻게 하냐고 물어보면

말없이 코드 맨 위에 적어줬었는데.. 

그땐 도움받을 선배, 동기들이 있으니까 굳이 관심 갖지 않았었다.

당장 닥친 과제를 처리하고 놀러가느라 바빴다..;;

 

혼자 복학해서 오랜만에 백준도 들어가보고 연습을 하다보니

익숙하지만 여전히 해결법을 모르는 이 오류가 떴고, 이젠 원인과 해결법을 알게되었다.

 

해결법은 단순하다. 진짜 코드 맨위에 저렇게 define 해주면 된다.

오류가 참 친절하다,,

 

원인은 바로 scanf 때문이다.

사실 저기 읽기 싫게 생긴 영어에 다 써있는데, 나도 해석할 생각은 무슨 바로 구글링을 했었다.

scanf가 안전하지 않다는 것이다. scanf말고 scanf_s 를 쓰라고 한다.

싫으면 _CRT_SECURE_NO_WARNINGS를 define하라고 한다.

#define _CRT_SECURE_NO_WARNINGS

이걸 코드 맨위에 써놓으면 define시키는 거다.

 

그럼 scanf_s 는 뭘까?

우리가 평소에 쓰던 scanf에 '입력받을 변수의 사이즈'가 추가된 함수이다.

scanf_s("%d", &n, sizeof(n) );

n이 int형이라면 4byte니까    scanf_s("%d", &n, 4 );

이런식으로 사용하면 된다.

 

이미 습관도 들었고 귀찮으니까 scanf_s가 어떤건지 정도만 확인하고

define이 편할 것 같다.