18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capitolo 11<br />

Il preprocessore<br />

Il preprocessore è un processore di testi che elabora il contenuto di un file sorgente prima<br />

della compilazione vera e propria.<br />

Il preprocessore è un programma che o<strong>per</strong>a sostituzioni tipografiche sul codice sorgente prima<br />

che tale codice venga visto dal compilatore vero e proprio.<br />

Anche se il preprocesso è un’o<strong>per</strong>azione formalmente distinta d<strong>alla</strong> compilazione, il preprocessore<br />

fa parte del compilatore e delle specifiche del linguaggio; ogni sorgente C viene<br />

preprocessato.<br />

Tutte le righe nel codice sorgente che iniziano con il carattere ’#’ (diesis, cancelletto, hash)<br />

sono direttive <strong>per</strong> il preprocessore. Tali direttive <strong>per</strong>mettono, tra le altre cose di:<br />

• includere (fisicamente) altri file all’interno del proprio sorgente;<br />

• ridefinire il significato degli identificatori, tramite sostituzione puramente tipografica nel<br />

codice sorgente;<br />

• disabilitare condizionalmente parti di codice in fase di compilazione, eliminando fisicamente<br />

il testo prima che il compilatore lo veda.<br />

NOTA Come si intuisce, il preprocessore è uno strumento potente ma molto <strong>per</strong>icoloso;<br />

<strong>per</strong> esempio, il compilatore non può effettuare il controllo degli errori<br />

sulle parti di codice disabilitate.<br />

Le modifiche apportate al file sorgente riguardano soprattutto:<br />

• l’eliminazione dei commenti<br />

• l’inclusione dei file<br />

• la sostituzione di costanti simboliche e macro<br />

Il preprocessore viene principalmente usato <strong>per</strong> includere altri file e definire nomi simbolici <strong>per</strong><br />

riferirsi a dati numerici. L’inclusione dei file di header serve a poter accedere ai prototipi delle<br />

funzioni, alle dichiarazioni delle strutture dati e delle variabili globali definite esternamente al<br />

proprio programma. Normalmente la documentazione di una funzione di libreria specifica quale<br />

header occorre includere <strong>per</strong> passare al compilatore le informazioni necessarie.<br />

109

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!