Вопрос

Когда-то давно я немного изучал C и C ++ в колледже, но я не уделял C ++ особого внимания.Теперь я хотел бы обратить некоторое внимание на C ++, но когда я использую getch() функция, я получаю предупреждение снизу.

Предупреждение C4996:"гетч":Имя POSIX для этого элемента устарело.Вместо этого используйте имя, соответствующее стандарту ISO C ++:_гетч.Дополнительные сведения см. в онлайн-справке.

Теперь я использую VS 2005 express, и я не знаю, что делать с этим предупреждением.Мне нужно использовать getch() после того , как я printf() сообщение об ошибке или что-то еще, требующее нажатия клавиши.

Вы можете мне с этим помочь?

Это было полезно?

Решение

Корпорация Майкрософт решила пометить имя без подчеркивания устаревшим, поскольку эти имена зарезервированы для выбора программиста.Расширения, специфичные для реализации, должны использовать имена, начинающиеся с символа подчеркивания в глобальном пространстве имен, если они хотят придерживаться стандарта C или C ++, или они должны пометить себя как объединенную среду, совместимую со стандартом, такую как POSIX / ANSI / ISO C, где такая функция затем соответствует одному из этих стандартов.

Читать этот ответ о getcwd() также, для пояснения П.J.Плаугер, который, конечно, очень хорошо разбирается в вещах.

Если вам интересно только дождаться некоторых клавиш, введенных пользователем, на самом деле нет причин не использовать getchar.Но иногда это просто более практично и удобно для пользователя в использовании _getch и друзья.Однако они не указаны в стандарте C или C ++ и, таким образом, ограничат переносимость вашей программы.Имейте это в виду.

Другие советы

Если вы в C ++, почему printf и getch ? Попробуйте вместо этого использовать cout и cin.get .

используйте _getch () вместо getch ()

Зачем тебе это? Почему бы не использовать getchar () , если вам нужно захватить один символ?

Как говорится в сообщении об ошибке, имя getch () устарело (так как это было расширение, специфичное для Microsoft), и вместо него рекомендуется _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 << '

Он выводит 'a', если вы вводите 'a' на консоли.

<< endl; break; }

Он выводит 'a', если вы вводите 'a' на консоли.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top