Size: a a a

IT KPI C/C++ ХВ (не UB)

2020 June 19

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Это будет намного быстрее чем искать и учиться пользоваться чужими либами
источник

AM

Alex Master in IT KPI C/C++ ХВ (не UB)
Jmik
А в чистом Си реально нет кроссплатформенного способа обрабатывать прерывания с клавиатуры?
Т.е у меня есть цикл и я хочу чтобы он завершался при нажатии на пробел

Нельзя повесить/забиндить функцию на прерывания с клавиатуры

Я згаю что можно ловить
^C
Но можно ли ловить другие кнопки?
Если ты про прерывания, то их сам терминал отлавливает, так что тебе нужно в своей программе выводить его из канонического режима, читать по 3-4 байта из потока ввода и смотреть, что там тебе ввели. Но тут та же история про второй поток. К тому же, если ты выводить терминал в неканон, то будь готов к попаболи. Если тебе нужно просто считать нажатие какой-то кнопки, то с головой хватит kbhit() под шиндовс и какого-то аналога под юникс (я уже забыл какой). Когда происходит нажатие, то kbhit() вернёт true, а потом читай с помощью getch() что там пришло
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Жесть
источник

AM

Alex Master in IT KPI C/C++ ХВ (не UB)
И да, если хочешь кроссплатформенность, то юзай препроцессор аки олд дед)
источник

AM

Alex Master in IT KPI C/C++ ХВ (не UB)
Ща пример кину
источник

AM

Alex Master in IT KPI C/C++ ХВ (не UB)
#if defined(__APPLE__)
#include <malloc/malloc.h>
#define MX_MALLOC_SIZE(x) malloc_size(x)
#elif defined(_WIN64) || defined(_WIN32)
#include <malloc.h>
#define MX_MALLOC_SIZE(x) _msize(x)
#elif defined(__linux__)
#include <malloc.h>
#define MX_MALLOC_SIZE(x) malloc_usable_size(x)
#endif
источник
2020 June 20

AM

Alex Master in IT KPI C/C++ ХВ (не UB)
вот типо такого, только для kbhit() и других функций под другие системы
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Зачем так заморачиваться, чтобы использовать либс?
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
В идеале интерфейс на апи мака винды и линукса будет сделан за полчаса, + работает как часы
источник

АН

Авроамэриканец Начрэ... in IT KPI C/C++ ХВ (не UB)
Компилятор c++ от майкрософт проприетарный? Не могу найти их репозиторий с исходниками. Если такой есть, дайте ссылку.

Если компилятор проприетарный, то как использовать <filesystem> под виндой? gcc не компилирует, на SO пишут что это известный баг и нужно использовать gcc7 и experemental/filesystem
источник

A

András in IT KPI C/C++ ХВ (не UB)
Яка в тебе версія msvc і з яким стандартом компілюєш?
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Авроамэриканец Начрэл
Компилятор c++ от майкрософт проприетарный? Не могу найти их репозиторий с исходниками. Если такой есть, дайте ссылку.

Если компилятор проприетарный, то как использовать <filesystem> под виндой? gcc не компилирует, на SO пишут что это известный баг и нужно использовать gcc7 и experemental/filesystem
Под линуксом у gcc отвалился filesystem и это какое-то время фиксили патчами или опциями линковки
Тут уже в зависимости от дистрибутива
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Осенью сталкивался, может у тебя ещё не втянули фикс и его надо вручную делать
источник

АН

Авроамэриканец Начрэ... in IT KPI C/C++ ХВ (не UB)
András
Яка в тебе версія msvc і з яким стандартом компілюєш?
Пока что никакая. Я не хочу ставить блоб. c++17
источник

АН

Авроамэриканец Начрэ... in IT KPI C/C++ ХВ (не UB)
Aleksey Belkevich
Осенью сталкивался, может у тебя ещё не втянули фикс и его надо вручную делать
Я под виндой
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Тогда смотри issues под свою сборку gcc
источник

АН

Авроамэриканец Начрэ... in IT KPI C/C++ ХВ (не UB)
А msvc проприетарный или есть какая-нибудь свободная версия?
источник

A

András in IT KPI C/C++ ХВ (не UB)
Mingw?
источник

АН

Авроамэриканец Начрэ... in IT KPI C/C++ ХВ (не UB)
András
Mingw?
Его и использую. Но в нём ошибка
источник

A

András in IT KPI C/C++ ХВ (не UB)
Авроамэриканец Начрэл
Его и использую. Но в нём ошибка
9 його версію?
источник