문제

어딘가에 제 시간에 나는 대학에서 C와 C ++를했지만 C ++에 많은 관심을 기울이지 않았습니다. 이제 C ++에주의를 기울이고 싶지만 사용할 때 getch() 기능, 아래에서 경고를받습니다.

경고 c4996 : 'getch':이 항목의 posix 이름은 더 이상 사용되지 않습니다. 대신 ISO C ++ 적합성 이름 : _getch를 사용하십시오. 자세한 내용은 온라인 도움말을 참조하십시오.

이제 저는 VS 2005 Express를 사용하고 있으며이 경고에 대해 어떻게 해야할지 모르겠습니다. 사용해야합니다 getch() 나 후 printf() 오류 메시지 또는 키 히트가 필요한 다른 것.

저를 도와 줄 수 있습니까?

도움이 되었습니까?

해결책

Microsoft는 프로그래머가 선택할 수 있도록 밑줄이 더 이상 사용되지 않고 이름을 표시하기로 결정했습니다. 구현 특정 확장은 C 또는 C ++ 표준을 준수하려면 글로벌 네임 스페이스의 밑줄로 시작하는 이름을 사용해야합니다. 그런 다음 함수는 해당 표준 중 하나에 해당합니다.

읽다 getcwd ()에 대한이 답변 물론 물건을 잘 알고있는 PJ Plauger의 설명을 위해서도.

사용자가 입력 한 일부 키를 기다리는 데 관심이 있다면 실제로 사용하지 않을 이유가 없습니다. getchar. 그러나 때로는 사용자가 사용하는 것이 더 실용적이고 편리합니다. _getch 그리고 친구들. 그러나 이들은 C 또는 C ++ 표준에 의해 지정되지 않으므로 프로그램의 휴대 성을 제한합니다. 그것을 명심하십시오.

다른 팁

C ++에 있다면 왜 printf 그리고 getch? 사용을 고려하십시오 cout 그리고 cin.get 대신에.

getch () 대신 _getch ()를 사용합니다.

왜 이것을 필요로합니까? 사용하지 않는 이유 getchar() 단일 캐릭터를 캡처 해야하는 경우?

오류에서 알 수 있듯이 이름은 이름입니다 getch() 더 이상 사용되지 않습니다 (마이크로 소프트 별 확장자). _getch() 대신 권장됩니다. Posix가 어디에 들어 왔는지 잘 모르겠습니다. POSIX는 정의하지 않습니다 getch(), 대신 포함합니다 getchar() 에 의해 지정된대로 ISO C 표준 (페이지 298, 최종 표준이 무료가 아니기 때문에 링크 된 초안). 해결책은 제안 된대로 수행하고 사용하는 것입니다. _getch(), 또는 표준 c getchar().

"std :: getc (stdin);"를 사용할 수 있습니다. 'getch ();'처럼 작동합니다. 내 프로그램에서. 'getch ()'에 대한 좋은 대안이라고 생각합니다. 내가 틀렸다면 말해줘.

#include <cstdio>

switch (std::getc(stdin)) {
    case 'a':   cout << 'a' << endl ; break;
    case 'b':   cout << 'b' << endl ; break;
    default:    cout << '$' << endl; break;
}

콘솔에서 'A'를 입력하면 'A'를 출력합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top