Problemi in assenza di #include <...>

di il
3 risposte

Problemi in assenza di #include <...>

Usando la funzione atof(const char *nPtr) della libreria <stdlib.h>, mi sono accorto che il compilatore non segnala errori anche se non inserisco il comando
#include <stdlib.h>.
D'altra parte, però, il programma non funziona correttamente. Inserendo, invece, #include ... , tutto funziona.
Non riesco a spiegarmi questo fatto. Mi spiego meglio: se non includo la libreria stdlib.h, dove va a "pescare" la funzione atof() in fase di esecuzione? Perché non mi dà errore in fase di compilazione? E cosa fa il programma in fase di esecuzione, visto che comunque atof() sembra restituire un qualche risultato, seppur sbagliato?
Spero di essermi spiegato.

3 Risposte

  • Re: Problemi in assenza di #include <...>

    Cia Samuele, il compilatore non ti segnalava niente perchè non includere le librerie non è un errore ma un warning. Quindi x ovviare al problema ogni volta che compili i programmi da terminale devi inserire:

    gcc -o nome_eseguibile nome_programma.c -Wall

    cosi aggiungendo -Wall (così com'è scritto, cioè con w grande) il compilatore ti segnala anche i warning oltre agli errori. Nel tuo programma ti segnalerà:

    warning: implicit declaration of function ‘atoi’
  • Re: Problemi in assenza di #include <...>

    Io uso Dev-c++ per windows, perciò i warnings vengono comunque sempre visualizzati. In questo caso, non so perché, non mi viene comunque visualizzzato nessun warning.
    In ogni caso mi interessa soprattutto capire, al di là della segnalazione dei warnings, come tratta il compilatore le funzioni contenute in librerie che non sono state incluse con #include. Per esempio: cosa fa l'eseguibile in corrispondenza di atof(), visto che non è stata inclusa la libreria nella quale è contenuta la funzione?
    Grazie ancora
  • Re: Problemi in assenza di #include <...>

    Le librerie non sono incluse con #include. Con #include si inseriscono le dichiarazioni dei prototipi delle funzioni. Le librerie propriamente dette sono quelle con il suffisso .o
Devi accedere o registrarti per scrivere nel forum
3 risposte