반응형

 

간단하게 n을 입력받아 n을 출력하는 코드입니다.

#include<stdio.h>

int main()
{
	int n;
	scanf("%d", &n);

	printf("%d", n);
}

이런... 오류가 발생했네요....

[C4996에러]

'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

최신 버전의 Visual Studio에서 scanf, strcpy, fopen 등등의 함수를 사용할때 위와 같은 C4996 에러 메세지가 뜨는 것을 쉽게 확인할 수 있습니다.C에서는 문자열, 파일에 관련된 버퍼나 스택 등 메모리에 문제가 생길 가능성이 있어서, 사이즈를 받는 _s 함수의 사용을 권장하기 때문에 이런 에러가 뜨는 것이라고 합니다.

저도 코딩 처음에 배울때 이것때문에 골치아팠었는데, 대부분 코딩 처음 시작할때 겪게되는 문제들 중 하나라고 생각합니다. scanf_s를 쓰면 해결되는 문제이긴 하지만, 매번 scanf_s로 쓰기 귀찮아서 scanf를 써도 오류가 발생하지 않는 법을 알려드리려고 합니다.

방법 1. 코드 맨 위에 #define _CRT_SECURE_NO_WARNINGS을 정의한다.

 

 

방법 2. 프로그램 상단에 프로젝트탭에서 프로젝트 속성 - 구성 속성 - C/C++ - 전처리기 - 전처리기 정의 편집으로_CRT_SECURE_NO_WARNINGS 를 추가해준다.

 

 

방법 3. 프로젝트를 생성할때 보통 빈 프로젝트로 해서 생성하시는 경우가 많으실텐데요. 빈프로젝트 대신 콘솔 응용 프로그램이나 데스크톱 마법사로 생성하여

추가옵션에 빈프로젝트 체크해주시고 SDL(Security Development Lifecycle)검사는 꼭 체크해제해주세요.

SDL옵션때문에 scanf 오류가 발생합니다.

 

빈프로젝트 대신 콘솔 응용프로그램!

 

반응형

+ Recent posts