Функции C, такие как getch(), которые не работают на Mac — могу ли я использовать виртуальную машину Windows, чтобы заставить их работать?

Некоторые функции Windows C не работают на Mac, например. getch(). Если я запущу их на виртуальной машине Windows, они будут работать? Или есть способ заставить их работать на OS X?


person BeardedWonder_30    schedule 18.09.2016    source источник
comment
Если вы запускаете код Windows на виртуальной машине Windows (которая размещается на Mac), то ваш код будет работать нормально. Если вы хотите запускать код изначально на Mac, вам придется потрудиться. Обязательно будут другие вопросы, касающиеся темы «Как смоделировать Windows getch() в системе Unix?» — Я постараюсь найти их.   -  person Jonathan Leffler    schedule 18.09.2016
comment
Я знаю, что со всеми поисками, которые я сделал, getchar был популярным ответом. Я не мог найти ничего о том, как заставить getch работать.   -  person BeardedWonder_30    schedule 18.09.2016


Ответы (1)


Используйте getchar(); Он должен работать.

Но если вы действительно хотите использовать точную функцию, я рекомендую использовать Windows vm или создать свой собственный метод, который реплицирует getch(), и использовать его как библиотеку на вашем Mac/Linux.

person Zaira Zafar    schedule 18.09.2016
comment
Есть разница между обычным getchar() и getch() WIndows; последний возвращает символ, не дожидаясь ввода возврата, тогда как getchar() обычно ничего не возвращает, пока не будет введен возврат. - person Jonathan Leffler; 18.09.2016
comment
Getch() удерживает экран до тех пор, пока не будет введен символ, но не отображает символ, в то время как getchar() также печатает введенный символ на экране. - person Zaira Zafar; 18.09.2016
comment
Ага; полный набор нюансов сложен, и в Windows также есть getche() для повторения символа. Ключ ^ H ^ H ^ H Самый важный момент заключается в том, что getch() возвращает значение, когда происходит следующее нажатие клавиши, немедленно, даже если нажата не клавиша «возврат» или «ввод», тогда как getchar() обычно ничего не возвращает до тех пор, пока не будет нажата клавиша. клавиша «возврат» нажата, возможно, после того, как было введено несколько других символов (хотя символы обычно будут отображаться эхом), и будет возвращен первый из введенных символов. - person Jonathan Leffler; 18.09.2016
comment
Нет ничего, что полностью повторяло бы getch() для mac/linux. Если вы действительно хотите использовать точную функцию, либо сделайте это с помощью виртуальной машины Windows, либо создайте метод, который реплицирует getch(), и используйте его как библиотеку на Mac/Linux. - person Zaira Zafar; 18.09.2016
comment
Если вы добавите некоторые из этих комментариев (ваших или что-то полезное из моего) к своему ответу, это сделает его более полезным и, вероятно, достойным голосования. В нынешнем виде он слишком лаконичен, чтобы быть по-настоящему полезным. - person Jonathan Leffler; 18.09.2016
comment
Я отредактировал его. Спасибо за совет. - person Zaira Zafar; 18.09.2016