C LanguagePreprocessore e macro


introduzione

Tutti i comandi del preprocessore iniziano con il simbolo # cancelletto (cancelletto). La macro AC è solo un comando del preprocessore che viene definito utilizzando la direttiva #define preprocessore. Durante la fase di pre-elaborazione, il preprocessore C (una parte del compilatore C) sostituisce semplicemente il corpo della macro ovunque appaia il suo nome.

Osservazioni

Quando un compilatore incontra una macro nel codice, esegue la sostituzione semplice della stringa, senza eseguire ulteriori operazioni. Per questo motivo, le modifiche apportate dal preprocessore non rispettano l'ambito dei programmi C: ad esempio, una definizione di macro non è limitata all'essere all'interno di un blocco, quindi non è influenzata da un '}' che termina un'istruzione di blocco.

Il preprocessore è, per impostazione, non completo - esistono diversi tipi di calcolo che non possono essere eseguiti dal solo preprocessore.

Di solito i compilatori hanno un flag a riga di comando (o impostazione di configurazione) che ci consente di interrompere la compilazione dopo la fase di pre-elaborazione e di ispezionare il risultato. Su piattaforme POSIX questo flag è -E . Quindi, l'esecuzione di gcc con questo flag stampa il codice sorgente espanso su stdout:

$ gcc -E cprog.c

Spesso il preprocessore viene implementato come un programma separato, che viene richiamato dal compilatore, il nome comune per quel programma è cpp . Un numero di preprocessori emette informazioni di supporto, come informazioni sui numeri di riga, che viene utilizzato dalle fasi successive della compilazione per generare informazioni di debug. Nel caso in cui il preprocessore sia basato su gcc, l'opzione -P sopprime tali informazioni.

$ cpp -P cprog.c

Preprocessore e macro Esempi correlati