Programming/C++

_CRT_SECURE_NO_WARNINGS(C4996)원인 해결 방법

Winduck 2022. 12. 28. 23:18
반응형

프로그래밍을 하다보면 "_CRT_SECURE_NO_WARNINGS"를 심심치 않게 볼수 있을 것입니다.

"scanf", "strcpy"등과 같은 함수들을 사용할때 이러한 에러를 볼수있는데

  • 원인

원인은 "안전하지 않은 함수를 사용했기 때문"입니다.

에러창을 자세히 읽어보면 'strcpy'함수 대신 'strcpy_s'함수 사용을 권장합니다.

  • 해결방법

1. 보안 경고 비활성화

일반적으로 공부하시는 분들에게는 이 옵션이 편하실 거라 생각합니다. 해당 경고를 비활성화 시키는 방법은 두가지가 존재합니다. 

먼저, 프로젝트 설정을 통한 비활성화 방법입니다.

설정을 위해 아래그림과 같이 [프로젝트 속성]창에 들어갑니다.

이후 [속성 구성](Configuration) -> [C/C++] -> [전처리기](Preprocessor)로 접근하고 _CRT_SECURE_NO_WARNINGS를 작성하면 해당 옵션은 SECURE 경고는 비활성화됩니다.

또다른 방법으로 코드작성을 통한 비활성화 방법입니다.

warning코드(4996)을 "#pragma warning(disable:4996)"를 통해 해당 비활성시킬수 있습니다.

2. 권장 함수를 쓴다.
경고로 뜨는 함수 경우는 보통 취약점 공격을 당하기 쉬운 함수들에 대해 사용을 금지시키고 설명을 통해 대체할 함수를 안내합니다. 그러므로 상업용 프로그램에서는 권장 함수들을 사용하도록 합니다.

 

반응형