본문 바로가기

My Study/Programming&Theory

ERROR C4996

새로운 데스크탑에 Visual Studio를 설치하고 약간의 코드를 짜고 있었습니다.

평소처럼 테스트를 위해 getch() 함수를 사용해 돌려보려고 했는데 컴파일 에러가 나더군요.


error C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.


지금껏 코딩하면서 보지못한 에러였습니다.

에러를 해석해보면

이 항목에 대한 POSIX 이름은 더이상 사용되지 않는다고 합니다. 대신에, ISO C++ 준수하는 이름을 사용하라네요 : _getch.


POSIX는 유닉스 OS에 기반을 두고 있는 표준 OS 인터페이스입니다. 이 때 사용된 함수 이름들은 사용 못하게 하는건가요??..


아무튼 아래와 같은 전처리문을 사용해주면 이러한 에러는 발생하지 않습니다.


# if defined(_MSC_VER) // Virtual C++ 버전

// _CRT_SECURE_NO_DEPRECATE 가 선언되어 있지 않으면 선언

# ifndef _CRT_SECURE_NO_DEPRECATE

# define _CRT_SECURE_NO_DEPRECATE (1)

# endif

# pragma warning(disable : 4996) // 4996 경고 비활성화

# endif