Today
Total
Recent Posts
Recent Comments
Archives
05-19 03:21
«   2024/05   »
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
반응형
관리 메뉴

UD_park's IT story

[Error] Error C4996: 'strcpy' 'strcat' 본문

IT - For Data/Error

[Error] Error C4996: 'strcpy' 'strcat'

kingllzn 2018. 6. 28. 11:50
반응형
SMALL

첫 번째 Error 포스팅에 대한 글입니다

 

깊은 복사와 얕은 복사에 대한 보기 예제

코드 소스를 작성하던 중에 발생했던

오류입니다

 

 

먼저 아래의 오류 표시줄부터 보시겠습니다

 

 

심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태
오류 C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. DeepCopyShallowCopyApply c:\users\test\source\repos\0614\deepcopyshallowcopyapply\deepcopyshallowcopyapply\deepcopyshallowcopyapply.cpp 24 

솔직히 저렇게 오류 코드가 길게 나와있어도

무슨 말인지 알아듣기가 매우 어렵습니다

 

아래에는 Visual Studio의 오류 목록에 나온

오류 코드입니다

 

 

 

오류에 대한 영문 해석과 설명을 하자면은

strcpy는 보안성이 약해서 안전하기 않으니

strcpy 대신 strcpy_s를 쓰는걸 추천하는

내용입니다

 

Visual Studio의 정확한 버전은 모르겠지만

나름 최신이라고 하는 버전들에서 

scanf , strcpy , fopen 등의 함수를 사용할 때,

주로 경우 발생하는 오류입니다

위와 같은 오류에 대한 해결 방법은

크게 2가지가 있습니다

 

① strcpy 대신 strcpy_s 사용

- 말 그대로 오류 목록의 설명을 따라서

strcpy 대신에 strcpy_s를 써주면 오류는

자연스럽게 사라집니다

다만, Warning 이라는 경고 정도의 표시만

나타날 뿐입니다

 

② 위의 오류에 대한 무시 방법

- 공부 목적으로 코드 소스 하시는 분들이

대부분 이시기에 딱히 보안성을 생각할 필요는

없습니다. 그렇기에 위의 보안성에 대한

문제를 무시하는 방법입니다

 

 

난 혼자 공부하는 용도로 만드는거니

보안성, 안전성은 개나 주라는 분들을 위해

보안성을 무시하는 방법들을 소개하겠습니다

 

 

⒜ #define _CRT_SECURE_NO_WARNINGS

 - define으로 안전성과 보안에 대한 경고를

무시하는 정의와 선언을 해버리는 방법입니다

 

 

⒝ 두 번째 방법은 사진으로 쉽게 설명해

드리겠습니다

 

 

Visual Studio의 위에 있는 프로젝트를

클릭합니다

 

 

목록 중에서 해당 프로젝트의 속성을

선택하여 클릭합니다

 

 

왼쪽의 C/C++을 클릭하고, 그 밑에 있는

전처리기를 클릭하고, 전처리기 정의를 선택합니다

 

 

전처리기 정의를 클릭하여 편집을 클릭합니다

 

 

아래의 화면과 같이 밑 줄친 문장인

_CRT_SECURE_NO_WARNINIGS 를 입력하고

확인을 클릭합니다

 

 

이렇게 하면

⒜ #define _CRT_SECURE_NO_WARNINGS 과 같은

원리로 오류가 발생하지 않습니다

 

개인적으로는 ⒜ #define _CRT_SECURE_NO_WARNINGS의

방법보다는 사진으로 설명드린 방법을 추천드리지만

 

두 가지 모두 큰 차이는 없기에 딱히 상관은 없습니다

이상 Error C4996: 'strcpy' 'strcat' 오류에 대한

포스팅을 마치도록 하겠습니다

 

 

혹시 다른것에 대해 궁금하신게

있으시다면

댓글에 달아주세요

 

아는것이면 친절하게 쉽게

모르는것이면 또 제가 알아내서

친절하게 쉽게 포스팅해서

설명해드리겠습니다

 

 

 

반응형
LIST
Comments