Potrzebny crossplatformowy odpowiednik funkcji getch

0

Witam!
Jestem początkującym zarówno w c++ jak i w asemblerze, przy czym tego drugiego nie potrafię prawie w ogóle :P
Więc tak, potrzebuję funkcji typu getch(). Próbowałem się za to zabrać w asm bo nie widzę innego crossplatformowego wyjścia :(
Mam taki oto kod:

int _getch(){
            char code;
            asm(
                "mov %al, 0x16;"
                "int 0x21;"
                "mov %eax,%al;"
                :"=a" (code);
            );
            return code;
        }

Taki kod niestety wywala błąd za błędem i nie wiem jak temu zaradzić, proszę o pomoc :(

0

Co ty za głupoty opowiadasz. Nie tykaj się takich rzeczy jak nie masz pojęcia o assembly. Zwykły getch jest przenośny.
Co do kodu to jedyne co robi to ładuje wartość do rejestru i wywołuje przerwanie, o którym prawdopodobnie nie wiesz nic, jest to przerwanie dosa które nie jest przenośne.
BTW. Co ci nie pasuje w getch-u?

0

Biblioteka conio.h z tego co słyszałem jest zdeprecjonowana i z tego co słyszałem nie należy jej używać.
A potrzebuję czegoś w stylu getch(), aby nie trzeba było wciskać enter aby potwierdzić i aby było crossplatformowe.

3

Faktycznie jeśli chodzi Ci o takie zachowanie, to przenośnej alternatywy nie ma, niemniej jednak używanie do tego problemu assemblera to armata na muchę, nie zapewni Ci to żadnej przenośności, chyba że dobrze wiesz co robisz.
Możesz zrobić to na defin-ach, aby nie linkować curses użyj nagłówka <termios.h> jak w tym linku . To będzie chyba najprostszy sposób.

0

W sumie i tak miałem używać definów do czyszczenia konsoli w zależnosci od systemu więc chyba nie da się tego ominąć.
Dzięki

0

Nie ma alternatywy?
A getchar to co?

0

Getchar działa z echem a getch bez, więc to żadna alternatywa

1 użytkowników online, w tym zalogowanych: 0, gości: 1