1. 원인
scanf_s는 character or character pointer 사용시 버퍼의 크기를 명시하게 되어있습니다.
scanf 함수의 특성상 버퍼의 크기가 명시되어 있지 않죠.
때문에 버퍼 오버플로우와 같은 공격에 취약합니다.
따라서 마이크로소프트사에서 개발한 visual Studio에서는
scanf 보다 scanf_s 라는 함수의 사용을 권장하고있습니다.. (한 마디로 보안 취약점이 그 이유입니다.)
p.s. 구버전에서는 scanf사용해도 아무런 에러 메시지가 없었는데 말이죠..
2. 증상
scanf를 사용하여 소스 코드 작성후 컴파일시 C4996 Error 발생.
근데 어쩌라고.
우린 쓸거야! 한다면
3. 해결방법 2가지
(1) 소스 상단에 #define _CRT_SECURE_NO_WARNINGS 추가
(2) 프로젝트 - 속성 -C/C++ - 전처리기 에서
_CRT_SECURE_NO_WARNINGS;
추가
사실 둘다 같은 방법이다
#define 의미가 전처리기가 처리할 의미를 정의해 둔단 것이고
프로젝트 속성에 전처리기 탭에 미리 해당 메시지를 올려두는 것도
모두 같은 의미를 갖는다.
'C > Error' 카테고리의 다른 글
[Clion] 한글 깨짐 (UTF-8) windows-949 (0) | 2020.03.31 |
---|---|
Visual Studio 컴파일 경로 변경하기. (1) | 2019.06.07 |