if else 为预处理器定义

if else define for preprocessor

//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" ?

预处理器无法为 "strings" 计算 ==

如果你写#DEFINE YES 1

,你可以保留你的符号

改进

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

之前

#define MYDEBUG YES