Definizione di funzioni

di il
4 risposte

Definizione di funzioni

Salve a tutti,
vorrei definire una funzione "function" che non ritorna nessun valore e a cui non vene passato nessun valore. scrivere
 void function(void)
oppure
 void function() 
o semplicemente
 function() 
è la stessa cosa?? perchè il mio compilatore non accetta le prime due e non la terza, o meglio durante la compilazione mi dà diversi warnings; questi:
  • gcc -Wall -o "provina" "provina.c" -lm (nella cartella: /home/cinzia/programmini C)
    provina.c:27:2: warning: data definition has no type or storage class
    reverse ();
    ^
    provina.c:27:2: warning: type defaults to ‘int’ in declaration of ‘reverse’ [-Wimplicit-int]
    provina.c:29:2: warning: return type defaults to ‘int’ [-Wimplicit-int]
    main()
    ^
    provina.c:35:4: warning: return type defaults to ‘int’ [-Wimplicit-int]
    reverse ( )
    ^
    provina.c: In function ‘reverse’:
    provina.c:41:2: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
    Compilazione terminata correttamente.
Avevo capito che le diciture fossero equivalenti.

4 Risposte

  • Re: Definizione di funzioni

    Devi scrivere

    void funzione()

    La main deve restituire una int

    int main()
  • Re: Definizione di funzioni

    Scusa ma se facessi un main in cui vi è solo un printf, ad esempio, sarebbe in contraddizione con il tipo di informazione che restituisce
  • Re: Definizione di funzioni

    L'informazione restituita da una funzione al chiamante non ha nulla a che vedere con le informazioni eventualmente visualizzate o stampate ...

    Rivedi il concetto di funzione C
  • Re: Definizione di funzioni

    I tre codici propsti non sono la stessa cosa.
    
    void function(void)
    
    dici che la funzione non restituisce niente e non prende nessun argomento
    
    void function()
    
    non viene specificato che la funzione non accetti nessun parametro
    
    function()
    
    senza tipo specificato di default la funzione ritorna un int ma è sconsigliato fate cosi ed il compilatore lo segnala con
    warning: return type defaults to ‘int’ [-Wimplicit-int]
    che se lo leggi diveta:
    attenzione: il tipo di ritorno di defaults è 'int' [ il flags che attiva il warning è -Wimplicit-int ]

    usando quindi il tipo di default che non è void ma int
    
    main()
    {
        puts("hello world!");
    }
    
    il compilatore oltre ad avvertirti con il messaggio precedente ti avvisa che ti sei dimenticato di ritornare un valore
    warning: control reaches end of non-void function [-Wreturn-type]
    attenzione: la funzione non ritorna nulla ma non è del tipo void [ flags che attiva l'errore -Wreturn-type ]
Devi accedere o registrarti per scrivere nel forum
4 risposte