본문 바로가기
설치 및 환경 설정

[C] 오류 C4996 해결 방법

by 까망 하르방 2021. 2. 24.
반응형

C4996 에러

Visual Studio는 기본적으로 취약함 함수를 사용할 수 없습니다.

&는 특정한 변수의 주소를 의미하며, 특정한 메모리 주소에 접근하여 데이터를 수정하기 위함입니다.

메모리 주소에 얼마만큼의 크기의 데이터를 입력해야 할지 알아야 합니다.

즉, scanf()는 특정 사이즈를 지정하지 않기 때문에 Overflow 오류가 생길 수 있기 때문에

안전하지 않은 취약점이 존재합니다.

 

 

아래 3가지 방식 중 선택하면 됩니다.

전처리기 매크로 정의 (코드 추가)

코드 제일 위에 매크로 정의 코드를 추가하여 간단하게 처리할 수 있습니다.

* #include <stdio.h> 보다 위에 위치해야 합니다.

 

#pragma warning(disable:4996)

 

혹은 아래 코드도 활용 가능

 

#define _CRT_SECURE_NO_WARNINGS

 

 

전체적인 형태

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main(void) {
        int a = 0;
        scanf("%d", &a);
        printf("%d", a);
        return 0;
}

 

 

전처리기 매크로 정의 (설정)

- 동일한 프로젝트에서 코드를 여러번 작업하는 경우에는 프로젝트 설정을 하는 것이 편합니다.

① [프로젝트] - [속성]

전처리기 매크로 설정

 

 

② [C/C++] - [전처리기] - [전처리기 정의]

;_CRT_SECURE_NO_WARNINGS

전처리기 설정

* 앞에 세미콜론(;)도 같이 포함해주어야 합니다. 

 

 

scanf_s() 사용

『val』변수에 4Byte(int 크기)만큼만 저장해서 이용합니다.

#include <stdio.h>
int main(){
    int val = 0;
    scanf_s("%d", &val, sizeof(val));
    printf("%d\n", val);
}

* 매번 코드를 저렇게 치는 것은 번거롭기 때문에 추천하지 않습니다.

반응형

'설치 및 환경 설정' 카테고리의 다른 글

[Eclipse] 이클립스 다크 테마 설정  (0) 2021.03.02
zoom 활용하기  (0) 2021.02.24
[MySQL] 부팅 시 자동 실행 설정  (0) 2021.02.24
[VS Code] WEB 관련 Extension  (0) 2021.02.24
[VS Code] Git 관련 Extension  (0) 2021.02.23

댓글