uni
Il preprocessore è una parte del compilatore che elabora il testo del programma prima dell’analisi lessicale e sintattica.
Svolge alcune azioni:
- include altri file nel testo
- espande secondo le loro definizioni i simboli definiti dall’utente
- include o esclude parti di codice che verrĂ compilato.
Queste operazioni sono controllate dalle direttive per il preprocessore (quelle che iniziano con#
) e possono essere inclusioni di file header. - percorso a partire da cartelle standard:
#include<file.h>
- percorso a partire dalla cartella in cui avviene la compilazione:
#include "file.h"
.
Define
#define identificatore token-string
Con define posso fare si che il preprocessore sostituisca ogni istanza del mio identificatore con il valore token-string.
Si può anche usare come macro, ovvero un simbolo che viene sostituito con una sequenza di elementi lessicali (la sua definizione):
#define massimo(A,B) ((A)>(B) ? (A) : (B))
Quindi ogni volta che il preprocessore trova massimo(A,B) lo sostituisce con il numero piĂą grande.
Compilazione condizionale
#if, #elif, #else, #endif
.
Forme Concise
#ifdef = #if defined identifier
#ifndef = #if !defined identifier
Define a riga di comando
Linux: g++ -DLINUX main.cpp -o main.exe
Evitare la doppia implementazione di un file
//file complesso.h
#ifndef complesso.h
#define complesso.h
//contenuto del file complesso.h
#endif
//file main.cpp
#include "complesso.h"
#include "complesso.h" //il file viene comunque incluso una sola volta.
int main() {
//blah blah
}