GeeksforGeeks

Compilazione di un programma C – Dietro la scena

Un preprocessore è un software di sistema (un programma di computer che è progettato per funzionare sull’hardware del computer e sui programmi applicativi). Esegue la pre-elaborazione del linguaggio di alto livello (HLL). La pre-elaborazione è il primo passo del sistema di elaborazione del linguaggio. Il sistema di elaborazione del linguaggio traduce il linguaggio ad alto livello in linguaggio macchina o codice macchina assoluto (cioè nella forma che può essere compresa dalla macchina).

  • Il preprocessore non conosce le regole di portata del C. Le direttive del preprocessore come #define entrano in vigore non appena vengono viste e rimangono in vigore fino alla fine del file che le contiene; la struttura a blocchi del programma è irrilevante.
  • Un preprocessore esegue principalmente tre compiti sul codice HLL :

  1. Rimozione dei commenti: Rimuove tutti i commenti. Un commento è scritto solo per gli umani per capire il codice. Quindi, è ovvio che non sono di alcuna utilità per una macchina. Quindi, il preprocessore li rimuove tutti in quanto non sono richiesti nell’esecuzione e non saranno eseguiti.

    Ecco come vedere un file con commenti rimossi in linux) :
    Scrivi un codice C (lascia che il nome del file sia prog.c). Preprocessalo usando il comando gcc -E prog.c


    Vedrai l’output con il codice senza commenti.

    Questo file viene salvato con un’estensione ‘.i’ (prog.i) che sarà in ingresso al compilatore.

  2. Inclusione di file: inclusione di tutti i file di libreria di cui il nostro programma ha bisogno. In HLL scriviamo #include che è una direttiva per il preprocessore che gli dice di includere il contenuto del file di libreria specificato. Per esempio, #include dirà al preprocessore di includere tutti i contenuti del file di libreria stdio.h.
    Questo può anche essere scritto usando i doppi apici – #include “stdio.h”
    Nota: Se il nome del file è racchiuso tra parentesi angolari, il file viene cercato nei percorsi di inclusione standard del compilatore. Se il nome del file è racchiuso tra doppi apici, il percorso di ricerca viene espanso per includere la directory dei sorgenti corrente.
  3. Espansione delle macro: le macro possono essere chiamate come piccole funzioni che non sono altrettanto overhead da elaborare. Se dobbiamo scrivere una funzione (con una piccola definizione) che deve essere chiamata ricorsivamente (ancora e ancora), allora dovremmo preferire una macro piuttosto che una funzione.
    Quindi, la definizione di queste macro è fatta dal preprocessore.
    #define SI 1000

    è un semplice esempio di macro.

    • Ci sono due tipi di macro: Object-like (non prendono parametri) e function-like (possono prendere parametri)
      // object-like macro#define // function-like macro #define () 
    • Puoi cancellare una definizione macro con #undef:
      // delete the macro# undef 
    • Possiamo scrivere macro multilinea come una funzione, ma ogni dichiarazione finisce con “\”.

      #include <stdio.h>
      #define MACRO(num, str) {\
      printf("%d", num);\
      printf(" is");\
      printf(" %s number", str);\
      printf("\n");\
      }

      
      

      
      

Questo articolo è stato contribuito da Diksha. Se ti piace GeeksforGeeks e vuoi contribuire, puoi anche scrivere un articolo usando contribute.geeksforgeeks.org o inviare il tuo articolo a [email protected]. Vedi il tuo articolo apparire sulla pagina principale di GeeksforGeeks e aiuta altri Geek.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.