INTRODUZIONE ALLA PROGRAMMAZIONE IN C



Il preprocessore C/#if - Inclusione condizionale



#if valuta una costante espressione intera; e' necessario utilizzare #endif per delimitare la fine dell'istruzione. E' possibile anche avere else (con #else) ed else if (con #elif). Altro uso comune che puo' essere fatto con #if e' il seguente: #ifdef - if defined #ifndef - if not defined Queste istruzioni sono utili per controllare se le macro sono settate, magari da differenti moduli di programma e da file header. Ad esempio: #ifdef USESTRINGDOTH #include <string.h> #else USESTRINGDOTH #include <strings.h> #endif USESTRINGDOTH Ad esempio, per settare la dimensione degli integer per un programma C portabile tra TurboC (su MS-DOS) e il sistema operativo Unix (o altro); ricordiamo che TurboC usa gli interi a 16 bit mentre Unix utilizza gli interi a 32 bit. Presumiamo che se TurboC sta girando, una macro "TURBOC" risultera' definita; cosi' dobbiamo solamente preoccuparci di controllare questo: #ifdef TURBOC #define INT_SIZE 16 #else #define INT_SIZE 32 #endif Come ulteriore esempio, potremmo avere la necessita' di includere il file msdos.h in sostituzione del file default.h nel caso in cui si stia eseguendo il programma su una macchina MS-DOS. Una macro "SYSTEM" e' settata al tipo di sistema, cosi' e' sufficiente controllare: #if SYSTEM == MSDOS #include <msdos.h> #else #include "default.h"