Condividi tramite


Macro (C/C++)

La pre-elaborazione espandere le macro in tutte le righe che non sono direttive per il preprocessore (righe che non dispongono di un oggetto # come primo spazio non vuoto) e le parti di alcune direttive che non vengono ignorate come parte di una compilazione condizionale. Le direttive di compilazione condizionale„ consentono di eliminare la compilazione delle parti di un file di origine testando un'espressione costante o un identificatore per determinare i blocchi di testo vengono inviati al compilatore e i blocchi di testo vengono rimossi dal file di origine durante la pre-elaborazione.

#define la direttiva in genere utilizzata per associare identificatori significativi con le costanti, parole chiave e istruzioni utilizzate comunemente o espressioni.Gli identificatori che rappresentano le costanti sono talvolta denominati “costanti token„ o “manifestano le costanti.„ Gli identificatori che rappresentano le istruzioni o espressioni vengono chiamati “macro„. In questa documentazione del preprocessore, solo il termine “macro„.

Quando il nome della macro viene riconosciuto nel testo di origine del programma o negli argomenti di altri controlli sicuri del preprocessore, viene considerato come chiamata a tale macro.Il nome della macro viene sostituito da una copia di macro corpo.Se la macro accetta argomenti, gli argomenti effettivi che seguono il nome della macro vengono sostituiti dai parametri formali in macro corpo.Il processo di sostituire una macro denominata con la copia l'elaborazione del corpo viene chiamato “espansione„ di una chiamata di macro.

In pratica, esistono due tipi di macro. „ macro del tipo di oggetto non accetta argomenti, sebbene le macro “del tipo di funzione„ possono essere definite accettare gli argomenti in modo che assomiglino e agiscono per le chiamate di funzione.Poiché le macro non generano gli effettivi chiamate di funzione, è talvolta possibile eseguire i programmi eseguiti più velocemente sostituendo le chiamate di funzione con le macro.(In C++, le funzioni inline sono spesso un metodo consigliato.) Tuttavia, le macro possono creare problemi se non vengono definiti con attenzione e non si utilizza.Potrebbe essere necessario utilizzare le parentesi nelle definizioni macro con gli argomenti per mantenere la precedenza corretta in un'espressione.Inoltre, le macro non possono gestire correttamente le espressioni con gli effetti collaterali.vedere getrandom esempio in La direttiva #define per ulteriori informazioni.

Una volta definita una macro, non è possibile sia necessario ridefinirlo su un valore diverso senza prima rimuovere la definizione originale.Tuttavia, è possibile ridefinire la macro con esattamente la stessa definizione.Pertanto, la stessa definizione può essere presente più volte in un programma.

#undef la direttiva consente di rimuovere la definizione di una macro.Dopo aver rimosso la definizione, è possibile ridefinire la macro a un valore diverso.La direttiva #define e La direttiva del #undef discutere #define e #undef direttive, rispettivamente.

Per ulteriori informazioni, vedere

Vedere anche

Altre risorse

Riferimento del preprocessore C/C++