Funzionamento di #define

di il
4 risposte

Funzionamento di #define

Ciao,
volevo dei chiarimenti sull'utilizzo di #define. Se non ho capito male è una sorta di costante, ma in cosa si differenzia? che usi specifici può avere? Ho cercato un po' definizioni in internet ma non hanno chiarito molto.
Grazie in anticipo

4 Risposte

  • Re: Funzionamento di #define

    Il punto essenziale per capire é che si tratta di una direttiva del preprocessore, ovvero interviene in una fase che precede la compilazione.
  • Re: Funzionamento di #define

    candaluar ha scritto:


    Il punto essenziale per capire é che si tratta di una direttiva del preprocessore, ovvero interviene in una fase che precede la compilazione.
    Ma poi si comporta come una costante? Se io scrivo all'inizio del programma sotto le librerie:
    #define N 5
    lui ad ogni istanza di N assocerà l'intero 5?
    Grazie
  • Re: Funzionamento di #define

    lui ad ogni istanza di N assocerà l'intero 5?
    Qui non ci sono istanze e non ci sono associazioni.
    Il preprocessore sostituisce tutte le "N" che trova nel resto del sorgente, dopo la #define, e lo sostituisce con 5: un po' come il trova & sostituisci di un qualsiasi editor di testo.
    Mi pare che qui sia descritto abbastanza bene http://www.fe.infn.it/u/spizzo/prog09/lezioni04/direttive_def.html ma comunque in un qualsiasi testo di linguaggio C è spiegato il funzionamento del preprocessore.
  • Re: Funzionamento di #define

    In soldoni, scrivendo una cosa così...
    #define PINCOPALLA  23
    
    int main() {
        int numero = PINCOPALLA;
        int doppio = numero + PINCOPALLA;
        
        printf( "Il triplo di %d è %d!!!\n\n", PINCOPALLA, 3*PINCOPALLA );
        
        getchar();
        return 0;
    }
    Il compilatore "vede" una cosa così...
    int main() {
        int numero = 23;
        int doppio = numero + 23;
        
        printf( "Il triplo di %d è %d!!!\n\n", 23, 3*23 );
        
        getchar();
        return 0;
    }
    ...e si comporta di conseguenza.
Devi accedere o registrarti per scrivere nel forum
4 risposte