훈, IT 공부/C,C++,MFC

warning C4996 10초만에 해결하는법 3가지 정리, Visual Studio 2022

IT훈이 2023. 6. 22.
반응형

 C4996 오류는 초기에 C++으로 개발하다보면, 정말 자주 볼 수 있는 에러입니다. C4996에러가 뜨면서 빌드가 안되고, 분명 예제사이트에서는 잘만 사용하던데, 나만 안되는 이유를 찾기 정말 어려웠습니다. 해당문제는 MSVC(Microsoft Visual C++)가 강제로 보안에 취약한 함수를 사용하지 못하도록 제어하기위해서 강제로 발생시키는 에러입니다. 해결방법은 총 3가지가 있고, 따라만 해주시면 쉽게 개선이 가능한 에러코드입니다.

 

 

 

warning C4996에러발생

빌드를 할때 아래와같은 에러코드가 발생됩니다. 

the posix name for this item is deprecated. instead use the ISO C and C++ ....

 

대부분 C4996에러가 발생되는 이유는 보안에 취약한 윈도우 제공 함수를 쓰기 때문입니다.

strstr, strcmp, strcpy, wcsicmp,wcsstr,strupr, itoa 등등

초창기에 개발되었던 함수들을 사용할때 발생하는 에러입니다.

 

아래 소개드리는 3개중에 한개만 적용하신다면

신속하게 문제를 해결하실 수 있습니다.

C4996에러

 

 

 

해결방법1. 함수변경

 wcsicmp 함수를 보안이 개선된 _wcsicmp함수로 변경하면 C4996에러가 말끔하게 해결됩니다. 대부분 C4996에러는 함수 앞에 언더바(_)를 붙여서 개선된 함수를 제공하고 있습니다.

 

 

 

해결방법2. 경고 무시하는 코드넣기

 증상이 발생하고 있는 소스 상단부분에 아래와같이 pragma warning(disable:4996)을 추가해준다면, C4996경고는 무시하고 넘어가게 됩니다.

#include <iostream>
#pragma warning(disable:4996)

C4996 해결법

 

 

 

해결방법3. 프로젝트 속성에 넣기

자신의 프로젝트의 속성페이지에서 직접 에러코드를 무시하도록 추가합니다.

 

프로젝트 우클릭 - 속성 - 구성 속성 - C/C++ - 고급 

해당 탭으로 이동하신 다음에 '특정 경고 사용 안 함' 에 4996을 추가합니다. 

프로젝트 속성에서 C4996 해결

 

 

 

안되는 해결방법

코드상에 아래 두줄 추가하여라는 stack overflow에 서양형님들의 조언이 있지만, 실제로는 동작하지 않는 해결방법입니다. 
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATE  

#include <iostream>
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATE

 

 

ⓒ 2023. IT훈이 all rights reserved.


 

아마존 라이트세일(Lightsail) wordpress 블로그 만들기 강좌 #2탄, 언어변경/관리자 계정추가

 

아마존 라이트세일(Lightsail) wordpress 블로그 만들기 강좌 #2탄, 언어변경/관리자 계정추가

📌Lightsail로 워드프레스 블로그 만들기 순서 1. AWS Lightsail 워드프레스 구축하기 2. 워드프레스 초기세팅하기(사이트언어, 관리자 계정추가) 3. AWS Lightsail 도메인 설정 하기 4. 워드프레스 기본플

master-hun.tistory.com

 

Amazon Lightsail 워드프레스 블로그 만들기 강좌 #1탄, 서버구축하기

 

Amazon Lightsail 워드프레스 블로그 만들기 강좌 #1탄, 서버구축하기

📌Amazon Lightsail로 워드프레스 블로그 만들기 순서 1. Amazon Lightsail 워드프레스 구축하기 2. 워드프레스 초기세팅하기(사이트언어, 관리자 계정추가) 3. Aamzon Lightsail 도메인 설정 하기 4. 워드프레

master-hun.tistory.com

반응형

댓글