Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [c] funzioni per funzioni

    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.

  2. #2
    posta 'tutto' il codice...
    ma comunque e' possibile...
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  3. #3
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    hai dichiarato i prototipi di funzione?
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  4. #4

    Re: [c] funzioni per funzioni

    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...

    codice:
    #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;
    }
    codice:
    #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;
    }
    ...Terrible warlords, good warlords, and an english song

  5. #5
    Si però io ho dichiarato il prototipo all'inzio prima del main

  6. #6
    posta il codice.
    ...Terrible warlords, good warlords, and an english song

  7. #7
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    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.
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  8. #8
    problema risolto.
    L'errore era semplicissimo
    p=vcomputer(); non funzionava perchè vcomputer l'avevo dichiarato
    void computer (void) e non int computer(void)

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    13
    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!
    tripallico c

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.