getch ist veraltet

Irgendwo in der Zeit habe ich C und C ++ in der Schule gemacht, aber ich habe nicht viel Aufmerksamkeit auf C ++ bekommen. Jetzt möchte ich etwas auf C ++ achten, aber wenn ich die function getch() , bekomme ich die Warnung von unten.

Warnung C4996: ‘getch’: Der POSIX-Name für dieses Element ist veraltet. Verwenden Sie stattdessen den übereinstimmenden ISO C ++ – Namen: _getch. Weitere Informationen finden Sie in der Online-Hilfe.

Jetzt verwende ich VS 2005 Express, und ich weiß nicht, was ich mit dieser Warnung machen soll. Ich muss getch() nachdem ich printf() eine Fehlermeldung oder etwas anderes, die einen Schlüsseltreffer erfordern.

Kannst du mir damit helfen?

Microsoft hat beschlossen, den Namen ohne unterstrichenen Unterstrich zu markieren, da diese Namen dem Programmierer vorbehalten sind. Implementation-spezifische Erweiterungen sollten Namen verwenden, die mit einem Unterstrich im globalen Namespace beginnen, wenn sie den C- oder C ++ – Standard einhalten wollen – oder sie sollten sich selbst als eine kombinierte standardkonforme Umgebung wie POSIX / ANSI / ISO C bezeichnen function entspricht dann einem dieser Standards.

Lesen Sie auch diese Antwort zu getcwd () , zu einer Erklärung von PJ Plauger, der sich natürlich sehr gut auskennt.

Wenn Sie nur auf einige vom Benutzer eingegebene Schlüssel warten getchar , gibt es keinen Grund, getchar nicht zu verwenden. Aber manchmal ist es einfach praktischer und bequemer für den Benutzer, _getch und Freunde zu verwenden. Diese werden jedoch nicht vom C- oder C ++ – Standard angegeben und begrenzen somit die Portabilität Ihres Programms. Merk dir das.

Wenn Sie in C ++ sind, warum printf und getch ? cin.get stattdessen cout und cin.get Betracht.

benutze _getch () anstelle von getch ()

Wie der Fehler sagt, ist der Name getch() veraltet (da es sich um eine Microsoft-spezifische Erweiterung handelt), und _getch() wird stattdessen empfohlen. Ich bin nicht sicher, wo POSIX hineinkommt; POSIX definiert nicht getch() , sondern enthält stattdessen getchar() wie im ISO C-Standard spezifiziert (Seite 298, Draft linked to, da der finale Standard nicht frei ist). Die Lösung wäre, wie vorgeschlagen _getch() und _getch() oder den Standard C getchar() .

Warum brauchst du das? Warum verwenden Sie getchar() wenn Sie ein einzelnes Zeichen erfassen müssen?