PDA

Visualizza la versione completa : [c] funzioni per funzioni


icklazza
08-04-2004, 11:07
Ok il titolo l'ho scritto da schifo e forse non rende il problema...
Il mio problema : posso richimare una funzione dentro ad un altra?
ad esempio se sono dentro a:
void computer(void)
{
int i;
i=controlloc();
...
}

mi viene scritto un strano errore ma forse ho sbagliato da qualche altra parte.
l'errore : not an allow type.
cosa puo essere?
Vi prego aiutatemi.

kNemo
08-04-2004, 11:10
posta 'tutto' il codice...
ma comunque e' possibile...

infinitejustice
08-04-2004, 12:32
hai dichiarato i prototipi di funzione?

Johnny_Depp
08-04-2004, 12:59
Originariamente inviato da icklazza

posso richimare una funzione dentro ad un altra?
lo si fa praticamente (quasi) sempre:

in main()
{
printf();
scanf();
strcat();
exit();
return();
etc...
}
------------------------------------------

probabilmente richiami una funzione il cui prototipo viene
dichiarato successivamente...


#include <stdio.h>

void func1()
{
printf("func1\n");
func2(); /* errore: func2 non ancora stata dichiarata */
}

void func2()
{
printf("func2\n");
}

int main()
{
func1();
while(getchar()!='\n') ;
return 0;
}

#include <stdio.h>

void func2()
{
printf("func2\n");
}

void func1()
{
printf("func1\n");
func2(); /* cos invece corretto in quanto func2 stata dichiarata prima di essere chiamata */
}

int main()
{
func1();
while(getchar()!='\n') ;
return 0;
}

icklazza
08-04-2004, 14:49
Si per io ho dichiarato il prototipo all'inzio prima del main

Johnny_Depp
08-04-2004, 14:56
posta il codice.

Xadoom
08-04-2004, 15:18
Da dentro una funzione puoi anche richiamare la funzione stessa, si chiama ricorsione, ma deve essere opportunamente gestita altrimenti rischi un ciclo di chiamate infinito. Per il tuo problema l'errore deve essere un altro. :ciauz:

icklazza
09-04-2004, 20:36
problema risolto.
L'errore era semplicissimo
p=vcomputer(); non funzionava perch vcomputer l'avevo dichiarato
void computer (void) e non int computer(void)

gheorghi
18-04-2004, 21:14
tutto il c++ e il c un continuo chiamare funzioni dentro altre... tieni conto che anche la main stessa una funzione, ha solo il privilegio di venire esegiuta per prima sullo stack...

molto semplice, chiamale esattamente come dalla main chiami una funzione, controlla di aver dichiarato i prototipi sen un casino...ciao!

Loading