我有一些框架代码可以做到这一点:
#ifdef USE_DOUBLE
typedef double real;
#else
typedef float real;
#endif
但是当我尝试使用这种类型时USE_DOUBLE
,就像这样定义(所以真正的==双):
- (id) initSomeObject:(real)arg andSomeOtherStuff:(id)thing
{
self = [super init];
if (self)
{
field = arg;
}
}
[someObject initSomeObject:2.0 andSomeOtherStuff:nil];
该arg
值被完全丢弃,显示为 5.3...e-315。但是,如果我USE_DOUBLE
关闭,则价值2.0
完美。这是在 iPhone 4 上使用 Xcode 4.3.3 和 LLVM 3.1 的最新 iOS 5+ 上。iOS 不能很好地处理双打吗?我的USE_DOUBLE
标志是否应该始终未定义?