Una macro può essere indefinito, può essere definito senza valore , o può essere definito con un certo valore, possibilmente un numero. Esempi:
#undef MACRO
#define MACRO
#define MACRO ??????
#define MACRO 0
#define MACRO 1
#ifdef MACRO o #if definiti (MACRO) verifica se la macro viene definita, con o senza valore.
#if MACRO sostituisce la definizione della macro; se la macro non è definita, sostituisce 0. Quindi valuta l'espressione trovata. Se prendiamo i cinque esempi sopra riportati, #if MACRO sarà trasformato in
#if 0
#if
#if ??????
#if 0
#if 1
numero 2 e 3 dà un errore di tempo di compilazione. I numeri 1 e 4 sono valutati come falsi, quindi il codice seguente viene saltato. Il numero 5 è vero.
#if è più flessibile: Si potrebbe scrivere
#if MACRO == 2
che solo compilare il seguente codice se la macro è stata definita per esempio come
#define MACRO 2
Grazie. Per sicurezza: #define IPAD_BUILD è sufficiente per essere definito (senza alcun valore?) In questo caso, #ifdef IPAD_BUILD restituisce true? – Geri
Sembra sì ._____ – Geri
effettivamente no =) Cambierò la risposta. – Stas