Domanda

Qualche tempo fa ho fatto un po 'di C e C ++ al college, ma non ho avuto molta attenzione al C ++. Ora vorrei prestare attenzione al C ++ ma quando sto usando la funzione getch () , ricevo l'avviso dal basso.

  

Avviso C4996: 'getch': il nome POSIX per questo elemento è obsoleto. Utilizzare invece il nome conforme ISO C ++: _getch. Vedere la guida in linea per i dettagli.

Ora sto usando VS 2005 express e non so cosa fare con questo avviso. Devo usare getch () dopo aver printf () un messaggio di errore o qualcos'altro che richiede un tasto.

Puoi aiutarmi con quello?

È stato utile?

Soluzione

Microsoft ha deciso di contrassegnare il nome senza carattere di sottolineatura deprecato, poiché tali nomi sono riservati al programmatore. Le estensioni specifiche dell'implementazione dovrebbero usare nomi che iniziano con un carattere di sottolineatura nello spazio dei nomi globale se vogliono aderire allo standard C o C ++ o dovrebbero contrassegnarsi come un ambiente conforme allo standard combinato, come POSIX / ANSI / ISO C, dove tale la funzione corrisponde quindi a uno di questi standard.

Leggi questa risposta su getcwd () anche per una spiegazione di PJ Plauger, che conosce molto bene le cose, ovviamente.

Se sei interessato solo ad attendere alcuni tasti digitati dall'utente, non c'è davvero alcun motivo per non usare getchar . Ma a volte è solo più pratico e conveniente per l'utente utilizzare _getch e gli amici. Tuttavia, quelli non sono specificati dallo standard C o C ++ e limiteranno quindi la portabilità del programma. Tienilo a mente.

Altri suggerimenti

Se sei in C ++, perché printf e getch ? Prendi invece in considerazione l'uso di cout e cin.get .

usa _getch () invece di getch ()

Perché ne hai bisogno? Perché non usare getchar () se devi catturare un singolo personaggio?

Come dice l'errore, il nome getch () è deprecato (dato che si trattava di un'estensione specifica di Microsoft) e si consiglia invece _getch () . Non sono sicuro di dove POSIX ci entri; POSIX non definisce getch () , ma include invece getchar () come specificato da standard ISO C (pagina 298, bozza collegata perché lo standard finale non è gratuito). La soluzione sarebbe fare come suggerito e usare _getch () , oppure usare lo standard C getchar () .

puoi utilizzare " std :: getc (stdin); " ;. Funziona come 'getch ();' nei miei programmi. Penso che sia una buona alternativa a 'getch ()' Se sbaglio, dimmelo.

#include <cstdio>

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

Emette "a" se si immette "a" sulla console.

<< endl; break; }

Emette "a" se si immette "a" sulla console.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top