考虑以下功能
CGSize CGSizeIntegral(CGSize size)
{
return CGSizeMake(ceilf(size.width), ceilf(size.height));
}
Run Code Online (Sandbox Code Playgroud)
CGSize
实际上由两个CGFloat
s 组成,并CGFloat
根据体系结构改变定义:
typedef float CGFloat;// 32-bit
typedef double CGFloat;// 64-bit
Run Code Online (Sandbox Code Playgroud)
因此,上面的代码在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
}
Run Code Online (Sandbox Code Playgroud)
肯定有一个编译器宏/常量(INTEL_X86
例如我们可以使用Mac ),但我无法在64位转换指南中找到它.
如何确定正在构建的体系结构?