我正在将iPhone游戏移植到Mac上,我正在编写一个包含以下内容的常用定义文件:
// first reset all defines
#undef TARGET_IPHONE
#undef TARGET_MAC
// set defines
#if TARGET_OS_MAC
#if TARGET_OS_IPHONE
#define TARGET_IPHONE
#else
#define TARGET_MAC
#endif
#endif
#ifdef TARGET_IPHONE
#error err1
#endif
#ifndef TARGET_IPHONE
#error err2
#endif
但是在为iPhone构建时,编译器会抛出err1和err2。
我不明白,那里有什么问题?
编辑:经过大约一个小时的尝试没有运气,我不得不将自己的定义添加到xcode构建选项中。
答案 0 :(得分:1)
你的代码很好。在我的编译器(gcc mingw)#error err2
被抛出。如果我插入
#define TARGET_OS_MAC 1
#define TARGET_OS_IPHONE 1
// set defines
所在的位置,#error err1
被抛出。
答案 1 :(得分:0)
这看起来像是一个编译器错误,或者你需要Apple的特别许可来使用#ifndef(这是一个笑话(我认为)。)
您可以尝试使用可能适用于Apple编译器的等效语法:
#if!defined(TARGET_IPHONE)
或
#if!TARGET_IPHONE
甚至
#ifdef TARGET_IPHONE
的#else
这是令人担忧的 - 我会寻找更新或不同的编译器。