본문 바로가기
개발도구

Visual Studio ] C4996 에러 해결

by eteo 2024. 5. 2.

 

 

Visual Studio에서 C4996 에러가 나는 이유는?

 

MSVC(Microsoft Visual C++ Compiler)는 보안 및 안전성과 관련된 이유(주로 버퍼 오버플로우 같은 보안 취약점 이슈)로 특정 함수들을 deprecated(사용 중단) 처리하였는데, 사용자가 이러한 비권장 함수를 사용할 때 C4966 경고를 발생시키고 더 안전한 대안인 _s가 붙은 함수를 선택하도록 유도하고 있다.

 

 

 

 

해결방법 1 : 해당 소스파일에서 C4996 경고를 끄는 법

 

소스파일 최상단에 "#define _CRT_SECURE_NO_WARNINGS" 를 추가한다.

 

 

#define _CRT_SECURE_NO_WARNINGS

 

 

 

해결방법 2 : 해당 프로젝트에서 C4996 경고를 끄는 법

 

프로젝트 우클릭 > 속성

모든 구성, 모든 플랫폼 선택

구성속성 > C/C++ > 전처리기 정의에 _CRT_SECURE_NO_WARNINGS 추가

 

 

 

 

 

해결방법 3 : 해당 프로젝트에서 C4996 경고 수준을 error에서 warning으로 내리기

 

프로젝트 우클릭 > 속성

모든 구성, 모든 플랫폼 선택

구성속성 > C/C++ > 일반 > SDL 검사 > 아니요 선택

 

이렇게 하면 warning 문구는 계속 뜨지만 컴파일은 된다.

 

 

 

 

 

해결방법 4 : _s가 붙은 권장함수 사용하기

 

단, _s 함수들은 Microsoft의 확장된 보안 버전으로 C 표준이 아니므로 다른 컴파일러나 플랫폼에서는 지원되지 않아 호환성이 떨어질 수 있다.