Question

Quelque part dans le passé, j’ai pratiqué le C et le C ++ au collège, mais je n’ai pas attiré beaucoup d’attention sur le C ++. Maintenant, je voudrais faire attention au C ++, mais lorsque j'utilise la fonction getch () , je reçois l'avertissement de dessous.

  

Avertissement C4996: 'getch': le nom POSIX de cet élément est obsolète. À la place, utilisez le nom conforme à ISO C ++: _getch. Consultez l'aide en ligne pour plus de détails.

Maintenant, j'utilise VS 2005 Express et je ne sais pas quoi faire à propos de cet avertissement. Je dois utiliser getch () après printf () après un message d'erreur ou autre chose qui nécessite une frappe de touche.

Pouvez-vous m'aider avec ça?

Était-ce utile?

La solution

Microsoft a décidé de marquer le nom sans trait de soulignement déconseillé, car ces noms sont réservés au programmeur. Les extensions spécifiques à une implémentation doivent utiliser des noms commençant par un trait de soulignement dans l’espace de nom global si elles souhaitent adhérer à la norme C ou C ++ - ou elles doivent se désigner comme un environnement compatible avec la norme combinée, tel que POSIX / ANSI / ISO C, où une telle la fonction correspond alors à l’une de ces normes.

Lisez cette réponse à propos de getcwd () . aussi, pour une explication de PJ Plauger, qui connaît très bien les choses, bien sûr.

Si vous ne souhaitez attendre que les touches saisies par l'utilisateur, il n'y a vraiment aucune raison de ne pas utiliser getchar . Mais il est parfois plus pratique et plus pratique pour l'utilisateur d'utiliser _getch et ses amis. Cependant, ceux-ci ne sont pas spécifiés par le standard C ou C ++ et limiteront donc la portabilité de votre programme. Gardez cela à l'esprit.

Autres conseils

Si vous aimez le C ++, pourquoi printf et getch ? Pensez à utiliser cout et cin.get à la place.

utilisez _getch () au lieu de getch ()

Pourquoi avez-vous besoin de cela? Pourquoi ne pas utiliser getchar () si vous devez capturer un seul caractère?

Comme le dit l'erreur, le nom getch () est obsolète (car il s'agissait d'une extension spécifique à Microsoft) et _getch () est recommandé à la place. Je ne sais pas où POSIX intervient; POSIX ne définit pas getch () , mais inclut plutôt getchar () comme spécifié par le Norme ISO C (page 298, brouillon lié à car la norme finale n’est pas gratuite). La solution serait de faire ce qui est suggéré et d’utiliser _getch () ou d’utiliser le standard C getchar () .

vous pouvez utiliser "std :: getc (stdin);". Cela fonctionne comme 'getch ();' dans mes programmes. Je pense que c'est une bonne alternative à 'getch ()' Si je me trompe, dites-le moi.

#include <cstdio>

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

Il génère "a" si vous entrez "a" sur la console.

<< endl; break; }

Il génère "a" si vous entrez "a" sur la console.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top