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() 문제 잘 해결하시고 즐거운 프로그래밍 되세요~!
[MariaDB] CSV 파일 데이터 MySQL(MariaDB)에 import 하기 (0) | 2022.10.08 |
---|---|
[C / Visual Studio] Stack Overflow Error 해결 방법 (0) | 2021.05.03 |
자주 쓰는 CMD 명령어 정리 (0) | 2021.03.04 |
[C / 논리 오류] scanf()를 무시하고 프로그램이 실행될 때 (0) | 2017.12.11 |