/ / if else definiuj dla preprocesora - obiektyw-c, c-preprocesor, preprocesor-dyrektywa

jeśli jeszcze zdefiniować preprocesor - cel-c, preprocesor c, preprocesor-dyrektywę

//initial code:

#define MYDEBUG YES

#if (defined(MYDEBUG) && MYDEBUG == YES)
#define NATIVEUNITID @"unitid_debug"
#else
#define NATIVEUNITID @"unitid_release"
#endif


//somewhere inside the code

NATIVEUNITID jest @"unitid_release"

Może nie rozumiem czegoś. Ale dlaczego? Jaki jest właściwy sposób definiowania NATIVEUNITID używając innego określenia?

Próbowałem obu #if (MYDEBUG) i #if (MYDEBUG == true) ale otrzymuję ten sam wynik.

Proszę, pomóż mi zrozumieć ten prosty przypadek. Jak mogę otrzymać NATIVEUNITID jest @"unitid_debug" ?

Odpowiedzi:

1 dla odpowiedzi № 1

Preprocesor nie może ocenić == dla „ciągów”.

Możesz zachować swój zapis, jeśli piszesz #DEFINE YES 1


0 dla odpowiedzi nr 2

Ulepszyć ta odpowiedź

#if !defined(YES)
#define YES (BOOL)1
#endif
#if !defined(NO)
#define NO  (BOOL)0
#endif

przed

#define MYDEBUG YES