TARGET_IPHONE_SIMULATOR宏在我添加到项目中的C ++源代码中不起作用。虽然应该注意,如果我只是用1或0更改宏,代码就会运行。
所以这是设置。我一直在转换文件: https://code.google.com/p/ld48jovoc/source/browse/util/tweakval/?r=13使用我在XCode中创建的iOS应用程序。
除标题外,一切都差不多。
#ifndef TWEAKVAL_H
#define TWEAKVAL_H
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/types.h>
// Do only in debug builds on simulator, this does NOT work on iOS device
#if TARGET_IPHONE_SIMULATOR // replace with 1 or zero to make it work
# define TV_USE_TWEAKVAL 1
#else
# define TV_USE_TWEAKVAL 0
#endif
//
// See the thread referenced above for idea of how to implement
// this without the __COUNTER__ macro.
// If we are in a build modethat wants tweakval, and the compiler
// supports it, use it
#if TV_USE_TWEAKVAL
# define _TV(Val) _TweakValue( __FILE__, __COUNTER__, Val )
//float _TweakValue( const char *file, size_t counter, float origVal );
int _TweakValue( const char *file, size_t counter, int origVal );
void ReloadChangedTweakableValues();
#else
// don't use it
# define _TV(Val) Val
# define ReloadChangedTweakableValues()
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif
cpp文件几乎完全相同,除了整个内容包含在#if TV_USE_TWEAKVAL中。
现在我可以通过代码或构建设置手动设置此宏,但我更喜欢通过检测预处理器命令来自动启用/禁用此功能。我的猜测是,在链接tweakval源代码时没有检测到宏,我不知道需要更改哪些构建设置来解决这个问题。
感谢。
答案 0 :(得分:1)
TARGET_IPHONE_SIMULATOR
来自TargetConditionals.h
。您需要#include
该文件。据推测,您的其他代码通过Cocoa/Cocoa.h
等其他路径间接获取。