일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- rnn
- DynamicProgramming
- 스택
- Softmax
- Python
- DP
- Hypothesis
- 머신러닝
- 파이썬
- 정렬
- loss
- 강의자료
- 알고리즘
- AI
- 파이토치
- 강의정리
- MSE
- 백준
- machine learning
- 딥러닝
- 홍콩과기대김성훈교수
- Deep learning
- Cross entropy
- classifier
- 자연어처리
- Natural Language Processing with PyTorch
- pytorch
- 머신러닝 기초
- tensorflow
- BAEKJOON
- Today
- Total
개발자의시작
[Visual Studio][C언어] 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.
비주얼스튜디오2013이후 보안정책이 강화되어 나타나는 문제라고 합니다. scanf와 같은 사용자 입력을 받는 함수 중 버퍼오버플로우 취약점이 있어 이를 방지하기 위해 이러한 조치를 취한 것 같습니다.
이를 해결방법으로 몇가지 정리해보았습니다.
1. _s 삽입
scanf 와 같은 입력을 받는 함수에서 주로 발생하는 문제입니다. 이를 해결하는 가장 간단한 방법으로 함수 뒤에 _s를 삽입해주는 것입니다. 결과를 확인해보면 아래와 같이 잘 작동하는 것을 확인할 수 있습니다.
2. _CRT_SECURE_NO_WARNINGS
위와 같은 매크로를 정의하여 불안전한 함수를 사용하는 것을 명시적으로 허락하는 것입니다. 매크로를 작성하고 사용한 결과 프로그램이 원하는 대로 작동하는 것을 확인할 수 있습니다.
3. 전처리기 정의
2번 _CRT_SECURE_NO_WARNINGS 매크로를 명시적으로 정의한것과 비슷하지만 코드를 작성할 때마다 이를 작성하지 않고 미리 전처리기를 정의하는 방법이 있습니다. 방법은 아래와 같습니다.
프로젝트를 우클릭하여 속성(R)을 클릭합니다.
속성페이지가 나타납니다. 왼쪽에 1) 구성 속성, 2) C/C++, 3) 전처리기를 클릭하면 다음과 같은 창이 나타납니다.
전저리기 정의 우측에 보면 영어로 무언가 쓰여 있습니다. 이를 클릭하고 미리 쓰여 있던 글 맨뒤에 ; 를 추가한 뒤 _CRT_SECURE_NO_WARNINGS를 추가하고 마지막으로 ; 를 꼭 붙여줍니다. 그다음 적용을 눌러주고 프로그램을 다시 실행시켜주면 아래와 같이 문제없이 프로그램이 작동되는 것을 확인할 수 있습니다.
이상 포스팅 마치며 질문 또는 이상한 점 있으면 댓글로 남겨주세요.
감사합니다.
'개발환경(IDE)' 카테고리의 다른 글
윈도우(windows) 파이참(PyCharm)-community-professional 설치 및 사용법 정리-python3.7 (0) | 2020.02.18 |
---|