if else为预处理器定义

时间:2016-11-25 10:53:08

标签: objective-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"

2 个答案:

答案 0 :(得分:1)

预处理器无法为"字符串"评估==

如果你写#DEFINE YES 1

,你可以保留你的记号

答案 1 :(得分:0)

改进this answer

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

#define MYDEBUG YES