/ / якщо ще визначити для препроцесора - об'єкт-c, c-препроцесор, препроцесор-директива

якщо ще визначити для preprocessor - object-c, c-preprocessor, preprocessor-directive

//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 є @"unitid_release"

Можливо, я щось не розумію. Але чому? Який правильний спосіб визначити NATIVEUNITID використовуючи інші визначити?

Я спробував обох #if (MYDEBUG) і #if (MYDEBUG == true) але я отримую той же результат.

Будь ласка, допоможіть мені зрозуміти цей простий випадок. Як я можу отримати NATIVEUNITID є @"unitid_debug" ?

Відповіді:

1 для відповіді № 1

Препроцесор не може оцінити == для "рядків".

Ви можете зберегти свої позначення, якщо ви пишете #DEFINE YES 1


0 для відповіді № 2

Покращувати ця відповідь

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

раніше

#define MYDEBUG YES