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.

#endif<br />

#ifndef macro<br />

/*<br />

* questo codice viene considerato<br />

* solo se "macro" non è stata definita<br />

*/<br />

#endif<br />

valuta solo se il simbolo X è definito (nel senso di #define) o meno.<br />

In #if oltre a numeri, simboli definiti in precedenza e o<strong>per</strong>atori interi è possibile usare la<br />

forma “defined(X)”. Per evitare troppi livelli condizionali e troppi #endif si può usare #elif<br />

con il significato di “else if”. Per esempio, il seguente codice<br />

#ifdef X<br />

/* codice 1 */<br />

#else<br />

#ifdef Y<br />

/* codice 2 */<br />

#else<br />

#ifdef Z<br />

/* codice 3 */<br />

#endif<br />

#endif<br />

#endif<br />

diviene il più leggibile<br />

#ifdef X<br />

/* codice 1 */<br />

#elif Y<br />

/* codice 2 */<br />

#elif Z<br />

/* codice 3 */<br />

#endif<br />

Un esempio pratico è il seguente<br />

#if SYSTEM == MSDOS<br />

#define HDR "msdos.h"<br />

#elif SYSTEM == SYSV<br />

/* elif equivale ad un else if */<br />

#define HDR "sysv.h"<br />

#else<br />

#define HDR "default.h"<br />

#endif<br />

#include HDR<br />

È possibile utilizzare la direttiva #if <strong>per</strong> eliminare porzioni di codice senza cancellarle (in fase<br />

di debugging <strong>per</strong> esempio):<br />

112

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

Saved successfully!

Ooh no, something went wrong!