| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 개발공부
- Gc
- 개발지식
- CustomEditor
- 가비지 컬렉션
- C#
- 할로우 나이트 분석
- 가비지 컬렉터
- SerializeField
- Hollow Knight
- 유니티
- 할나 엔딩
- 커스텀에디터
- 마개조
- Garbage Collecter
- 에디터 개조
- GC 원리
- 할나 후기
- 유니티 #UI 늘리기 #이미지 재사용
- CustomPropertyDrawer
- Zenocide
- 유니티 렉
- 유니티 세이브
- 유니티 #공전 #유니티회전고정
- 커스텀프로퍼티드로어
- 할로우 나이트 엔딩
- 유니티 에디터
- SerializeReference
- 할로우 나이트
- Unity
- Today
- Total
가을의 개발 일지
[Visual Stduio] scanf_s 오류 무시하기 본문

C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
그저 과제를 풀 뿐임에도, 마이크로소프트는 보안 상의 이유로 scanf 대신 scanf_s를 쓰라고 강요한다.
막상 scanf_s로 바꾸면 백준에서 또 컴파일 에러가 난다. 귀찮은 이 에러를 해결하는 법을 알아보자.
1. scanf_s 사용하기
당연하지만 가장 쉬운 방법은, scanf_s를 사용하는 것이다.
다만 scanf_s를 사용하면 백준 등 다른 컴파일러에 사용할 땐 컴파일 에러가 난다. 상당히 귀찮다. 현업 파일이 아니라면 그닥 좋지 않다.
2. 프로젝트 전처리기 설정 변경
다음은 프로젝트 전체에 적용하는 방법이다.

프로젝트 - "프로젝트 이름" 속성에 들어가자.

구성 속성 - C/C++ - 전처리기 - 전처리기 정의를 찾아주자.

이미 있는 문구 뒤에
;_CRT_SECURE_NO_WARNINGS
을 입력해주면, 더 이상 해당 에러가 나타나지 않는다.
명령어의 뜻은?
맨 앞의 ;는 각 심볼을 구분하는 구분자다. 앞에 쓴 정의도 적용하고, 추가로 뒷 문장도 적용하겠다는 뜻이다.
_CRT_SECURE_NO_WARNINGS는 비주얼 스튜디오 컴파일러가 띄우는 경고 메세지를 무시한다는 디렉티브다. 보안 상의 위험은 그래도지만, 경고 메세지를 띄우지 않겠다는 의미다. 따라서 비교적 보안이 중요하지 않은 상황(코테, 과제 등)에 쓰는 게 좋다.
3. #define _CRT_SECURE_NO_WARNINGS
다음으로, 소스 코드 단위로 무시하는 방법도 있다.

코드의 최상단에
#define _CRT_SECURE_NO_WARNINGS
를 삽입해주는 방법이다.
전처리기 설정과 마찬가지로 프로젝트 전체에 적용된다.
4. pragma warning(disable:4996)
3번과 비슷하게 소스 코드 최상단에
#pragma warning(disable:4996)
을 삽입하는 방법이다.

이 문구는 오직 4996 에러만 무시한다는 점과, 프로젝트 어디서나 선언이 가능하지만, 적용은 오직 선언된 위치부터 파일의 끝까지만 적용된다는 차이점이 있다.
당연하다면 당연할 수 있지만, 소스 코드 내에만 적용되며, 전체 프로젝트에 영향을 끼치진 않는다.
애초에 C를 코테와 과제에만 쓰다보니, 이 방법을 가장 많이 사용할 것 같다.
닫는 글
적용할 거면 전부 다 적용하고, 말 거면 말 것이지... 왜 비주얼 스튜디오에만 새 함수를 만들어서 이렇게 고생인 걸까.
포스팅하며 궁금한 부분은 chatGPT에게 많이 물어봤는데, 이런 설명은 참 잘해주는 것 같다.
비주얼 스튜디오로 코딩하는 모두, 파이팅이다.
참고 문헌
- "[C / C4996] scanf_s() 오류 발생 시 해결(무시)하는 방법", AngelPlayer, 티스토리, https://angelplayer.tistory.com/16
- "[비주얼 스튜디오] scanf 오류 왜 발생하는지, 그리고 어떻게 해결하는지", 준형 교수, 티스토리, https://programmerjoon.tistory.com/4
'알고리즘' 카테고리의 다른 글
| 우선순위 스택은 왜 없을까? (0) | 2025.12.20 |
|---|---|
| [알고리즘] 확장 유클리드 알고리즘 구현하기 (2) | 2023.05.14 |
| [알고리즘] 유클리드 알고리즘 구현하기 (0) | 2023.05.09 |