본문 바로가기
기타/보관소

C언어 :: scanf 함수 관련 C4996 에러 해결 방법

by rockykim 2015. 11. 22.






Microsoft Visual Studio 2015 Community 버전을 사용하면서


C언어를 공부 중입니다.






1>------ 빌드 시작: 프로젝트: SimpleProject, 구성: Debug Win32 ------

1>  exercise.c

1>c:\workspace\simpleproject\simpleproject\exercise.c(440): error 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.

1>  c:\program files (x86)\windows kits\10\include\10.0.10150.0\ucrt\stdio.h(1270): note: 'scanf' 선언을 참조하십시오.

========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========






그런데 함수 중에 scanf 를 사용하면 에러가 나면서 빌드를 제대로 하지 못하더군요.


원인을 찾아보니... scanf 가 안전하지 않을 수도 있다면서요.


안전하지 않긴 개뿔이...




안전하지 않아도 사용하고 싶은데 어쩌라고.


다행히 친절하게 해결책도 제시해주네요.






1>------ 빌드 시작: 프로젝트: SimpleProject, 구성: Debug Win32 ------

1>  exercise.c

1>c:\workspace\simpleproject\simpleproject\exercise.c(440): error 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.

1>  c:\program files (x86)\windows kits\10\include\10.0.10150.0\ucrt\stdio.h(1270): note: 'scanf' 선언을 참조하십시오.

========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========





_CRT_SECURE_NO_WARNINGS. 를 사용하라고 하는데...


이제 막 배우기 시작했는데. 뭘 알고 어떻게 사용하라고!




찾아보니까 어떻게 사용하는지 나옵니다.


그래도 한참 찾았네요.





헤더파일 선언 전에 위와같이 사용합니다.

꼭 먼저 선언해야합니다.



#include <stdio.h> 보다 나중에 선언하게 되면

똑같은 에러가 발생하게 됩니다.



단순히 순서만 바뀌는 건데도 에러가 나고, 안나고의 차이가 있군요.

저처럼 해결책 찾느라 쓸데없이 고생하는 분들이 없길 바랍니다.









댓글