Warning importanti?

di il
2 risposte

Warning importanti?

Ciao a tutti ,stò iniziando a a studiare un pò di c ed ho qualche problema a capire l'importanza ed il significato di due warning

posto il codice:

void dummy();
int main()
{
printf("Hello world!\n");
dummy();
return 0;
}

void dummy() {
printf(("sono dummy"));
}

quest'esempietto funziona regolarmente se però commento la dichiarazione di dummy in testa ottengo due warning:

/*void dummy();*/
int main()
{
printf("Hello world!\n");
dummy();
return 0;
}


void dummy() {
printf(("sono la funzione dummy"));
}

in particolare
C:\code blocks\notazione_polacca\main.c|11|warning: implicit declaration of function 'dummy' [-Wimplicit-function-declaration]|
C:\code blocks\notazione_polacca\main.c|15|warning: conflicting types for 'dummy'

la dichiarazione implicita è quindi da evitare sempre?

uso il compilatore GNU GCC

2 Risposte

  • Re: Warning importanti?

    E' ovvio. Se il compilatore non sa cosa sia dummy (incontra una sua chiamata nel main PRIMA di conoscerne il codice) assumerà implicitamente che sia una funzione che restituisce un int (primo warning). Ma poi vede che non è così (secondo warning).

    Devi dichiarare il prototipo sempre, oppure permettere al compilatore di sapere cosa sia la funzione PRIMA che venga usata. Ovvero, puoi scrivere
    
    void dummy() {
    printf(("sono la funzione dummy"));
    }
    
    int main()
    {
    printf("Hello world!\n");
    dummy();
    return 0;
    }
    
  • Re: Warning importanti?

    Grazie
Devi accedere o registrarti per scrivere nel forum
2 risposte