12 / 12 / 2
Регистрация: 09.03.2011
Сообщений: 38
|
|
1 | |
Замена getch()24.06.2011, 15:14. Показов 24710. Ответов 27
Метки нет (Все метки)
Здравствуйте. Решил повысить переносимость своего кода и задался вопросом: на что заменить getch? Насколько я понимаю, эта функция откажется работать в юникс-системах и тп.
Хочу добиться эффекта ожидания нажатия любой клавиши. Получение кода клавиши не обязательно. Подчеркну, что функция должна быть в стандарте плюсов и платформонезависимой.
0
|
24.06.2011, 15:14 | |
Ответы с готовыми решениями:
27
Аналог getch или русские буквы в getch getch getch() getch |
12 / 12 / 2
Регистрация: 09.03.2011
Сообщений: 38
|
|
24.06.2011, 18:29 [ТС] | 21 |
=) ну в каком-то смысле да. ток, секундочку... при чем тут MFC? насколько я помню, это виндовская dll, которая что-то там мутит не совсем понимаю где и мешает запускать код на машинах без нужной ее версии. ))))) разве в ней есть необходимость, если мы тот же код просто прокомпилим gcc? имхо нет!
Добавлено через 7 минут Подведу некую черту: 1) мы поняли, что написать полностью кроссплаформенный код тут нельзя. 2) существует стандартная функция system(), которая позволяет, вроде бы, прописать туда скрипты терминала. Это привязывает нас к системе, но не вылезает за СВЯЩЕННЫЙ СТАНДАРТ ПЛЮСОВ. ) Посему, предположив, что подавляющее большинство компиляторов поддерживает директивы типа #ifdef и _WINDOWS/_UNIX или что-то в этом роде, мы можем написать код, учитывающий это, и просто в юниксовой версии написать скрипты терминала. Так что ставлю на поветку вопрос: Можно ли достичь ожидания нажатия любой клавиши терминальными скриптами?
0
|
24.06.2011, 18:39 | 22 |
Хотел сказать винапи .
Нет ну как же. Смотрите. Хотим напечатать в консоли хеллоу в позиции 3,5. В винде это к винапи, в линуксе это к ncurses...... Можно, конешно, придумать одну стандартную функцию. В недрах которой будет все та же проверка - "компилируем в винде или в никсе?". Но зачем? Таких ведь вещей не так мало. Добавлено через 5 минут Ну если написать соответствующий скрипт/бинарник. Вообще в линуксе оболочек много. И привязываться к какому-то скрипту, имхо, не правильно. Все равно придется использовать условную компиляцию. Так просто сдеайте как по ссылке предложено. И будет ваша программа вполне кроссплатформенна.
0
|
12 / 12 / 2
Регистрация: 09.03.2011
Сообщений: 38
|
|
24.06.2011, 18:45 [ТС] | 23 |
Ну так-то оно так... но лично я, например, писание по экранным координатам делал только в восьмом классе, когда консольная графика еще приносила фан. Тут дело другое. ждать нажатия клавиши - это желание возникает вне зависимости от системы. могу придумать сотню простых приложений, даже отладчиков, где это существенно упростит процесс. а желание оставаться в стандарте - желание сакрального рода. )
Добавлено через 3 минуты Ладно, будем считать, что действительно, написать адекватный код, соответствующий необходимым требованиям невозможно. Самое реальное а) не использовать б) писать свой вариант с изменениями. Ну, значит, тему, наверное, можно прикрывать. )
0
|
24.06.2011, 18:51 | 24 |
Так там по ссылке termios.h, а это же POSIX. Вопрос ведь в том, как обойтись стандартными средствами.
Добавлено через 3 минуты У Страуструпа - это книга (книги) описывающие язык С++, а у Шилдта это просто справочник (даже чуть более, чем просто справочник). Как их сравнить??
0
|
12 / 12 / 2
Регистрация: 09.03.2011
Сообщений: 38
|
|
24.06.2011, 18:52 [ТС] | 26 |
Ну дык! )
0
|
24.06.2011, 19:04 | 27 |
Хорошо. windows, linux, BSD, UNIX, Symbian, Android..... завтра Вася еще одну напишет ОС. Для всех все тащить в стандарт? А потом три часа ждать статической компиляции хелло ворд? Потому как компилятор будет разгребать 100500 условий?
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
25.06.2011, 06:00 | 28 |
Оно описано стандартом POSIX, поэтому используй условную компиляцию (как ты и хотел в сообщении #13)
0
|
25.06.2011, 06:00 | |
25.06.2011, 06:00 | |
Помогаю со студенческими работами здесь
28
getch() getch Не работает getch() getch(), char *name; Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |