考虑以下函数
CGSize CGSizeIntegral(CGSize size)
{
return CGSizeMake(ceilf(size.width), ceilf(size.height));
}
CGSize
实际上由两个CGFloat
s 和 s 组成,而CGFloat
s 的定义根据架构而有所不同:
typedef float CGFloat;// 32-bit
typedef double CGFloat;// 64-bit
所以,上面的代码在 64 位系统上是错误的,需要用类似的东西更新
CGSize CGSizeIntegral(CGSize size)
{
#if 64_bit
return CGSizeMake(ceil(size.width), ceil(size.height));
#else
return CGSizeMake(ceilf(size.width), ceilf(size.height));
#endif
}
这肯定有一个编译器宏/常量(INTEL_X86
例如,对于 Mac,我们可以使用),但我无法在64-bit transition guide中找到它。
如何确定正在构建的架构是什么?