Innanzitutto in generale in un header file non ci vanno le definizioni delle funzioni, ma solo le dichiarazioni dei prototipi. In ogni caso non penso proprio che sia un problema dovuto a quella funzione
codice:
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
int mygetch()
{
struct termios oldt, newt;
int ch;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}
int main(void)
{
short i = 0;
char ch;
printf("Immetti dieci caratteri:\n");
while ( i++ < 10 ) {
printf("Carattere %hd: ", i);
ch = (char) mygetch();
printf("Hai scritto: %c\n", ch);
}
return 0;
}
codice:
YuYevon@slackware:~$ gcc --version
gcc (GCC) 4.2.4
Copyright (C) 2007 Free Software Foundation, Inc.
YuYevon@slackware:~$ gcc prova.c -o prova -Wall -pedantic
YuYevon@slackware:~$ ./prova
Immetti dieci caratteri:
Carattere 1: Hai scritto: q
Carattere 2: Hai scritto: w
Carattere 3: Hai scritto: e
Carattere 4: Hai scritto: r
Carattere 5: Hai scritto: t
Carattere 6: Hai scritto: y
Carattere 7: Hai scritto: u
Carattere 8: Hai scritto: i
Carattere 9: Hai scritto: o
Carattere 10: Hai scritto: p
Prova a compilare il codice che ho appena postato e vedi se ti da errori. Se la compilazione va a buon fine, significa che il problema è altrove.