2016-11-25 3 views
-1
//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 is @"unitid_debug"?

ответ

1

Препроцессор не может оценить == для «строк».

Вы можете сохранить ваши нотации, если вы пишете #DEFINE YES 1

0

Для улучшения this answer

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

перед тем

#define MYDEBUG YES 
Смежные вопросы