Newsgroup: it.comp.lang.c
Titolo: [abbastanza OT]Problemi con kbhit

Salve a tutti.
Lo so che è abbastanza OT, se non del tutto, ma ho un problema con la
funzione kbhit del conio.
In realtà non ho capito se è un difetto dell'lcc, perché una cosa del genere
non mi era mai successa. Lui ha nel suo conio.h una funzione che si chiama
_kbhit(), ma benché includa il conio.h, quando la uso e compilo mi dà error:
missing prototype.
Che cosa può essere?
Il programma è questo:
#include <conio.h>
#include <stdio.h>
#include <time.h>
int _kbhit(void);
double          conta(void);
void            end(void);
void            main(void)
{
    char            s = 'a';
    printf("Programma contatempo\n\n\nCosa vuoi fare?\n");
    printf("(s) Inizia a contare\n(x) Esci\n");
    while ((s != 's') && (s != 'x')) {
        scanf("%c", &s);
    }
    switch (s) {
    case 's':
        conta();
        break;
    case 'x':
        end();
        break;
    }
}
double          conta(void)
{
    int         ora_i, ora_f, diffora;
    printf("Premere un tasto quando si vuole iniziare a contare...\n");
    while (_kbhit());
 ora_i = time(NULL);
    printf("Premere un tasto per terminare...\n");
 while (_kbhit());
    ora_f = time(NULL);
    diffora = difftime(ora_f, ora_i);
    printf("Sono passati %d secondi\n", diffora);
    return diffora;
}
void            end(void)
{
    printf("Ciao a tutti\n\n\n");
}
Ciao,
Zeppe

void            main(void)
^^^^^
int main() 

 int main()
Perché? Dopotutto nel programma non ritorna nulla...
Ciao,
Zeppe

Perché? Dopotutto nel programma non ritorna nulla...
Lo standard del linguaggio IMPONE che main() ritorni "int".
Un codice in cui e' presente "void" come valore di ritorno e'
pericoloso e non conforme allo standard.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------
#exclude <windows.h>

 pericoloso e non conforme allo standard.
Capito.
Ma è quindi necessario reitornare davvero qualcosa alla fine del mian, o si
scrive int main () e non si ritorna nulla?
Ciao,
Zeppe

scrive int main () e non si ritorna nulla?
Si scrive int main() e si ritorna 0 nel caso di successo.


 Ma è quindi necessario reitornare davvero qualcosa alla fine del mian,
Si, normalmente
return 0;
ad indicare che tutto è andato bene.
EMG

 ad indicare che tutto è andato bene.
Capito.
Grazie,
Zeppe

 ad indicare che tutto è andato bene.
Perchè il valore di ritorno potrebbe esser preso dal sistema operativo per
poi svolgere altre diterminate operazioni.
Ciao $Ale$

richiamarle non ci vuole.
Non ci siamo.
Se nel file header c'e' l'underscore, si usa con l'underscore.
Se non c'e', non si usa. 
Non ci sono meccanismi nascosti.


 comune che la funzione si chiami kbhit() senza underscore iniziali.
in una riga del conio.h c'č:
#define _kbhit kbhit
ma sia che lo sriva in un modo sia che lo scriva nell'altro,  il compilatore
mi dice missing prototipe.
La prima volta funziona, la seconda volta no. Ad esempio:
se io scrivo
__
#include <conio.h>
int main (void)
{
for(;;){
if (_kbhit()) break;
}
for(;;){
if (_kbhit()) break;
}
return 0;
}
___
termina alla prima pressione di un tasto...
ma anche questo lo fa:
__
#include <conio.h>
int main (void)
{
while (!_kbhit());
while (!_kbhit());
return 0;
}
__
Chi sa perché?
inoltre, se nel conio.h c'č
#define _kbhit kbhit
li posso usare indifferentemente?
Grazie,
Zeppe

li posso usare indifferentemente?
Non usare nomi che iniziano con '_' ... conio.h potrebbe
cambiare.
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 non effettua la lettura stessa.
Grazie, ho capito!
Zeppe

Perchè non si propone di *creare* un it.comp.asm ?
Chi sa come si fa/se ne occupa?
saluti, P.-----------------------------------------
Dal luogo illune del tuo silenzio
mi riscuote ogni giorno l'urlo del mattino.
O notte celeste senza resurrezione
perdonami se torno ancora a queste voci.
 *  E. Morante *
-------------------------------------------
+++++++++++  Poesia & Entropia ++++++++++++
http://utenti.tripod.it/aiportne/index.htm
+++++++++++++++++++++++++++++++++++++++++++
-------------------------------------------