Рассмотрим следующую функцию
CGSize CGSizeIntegral(CGSize size)
{
return CGSizeMake(ceilf(size.width), ceilf(size.height));
}
CGSize
фактически состоит из двух изменений CGFloat
s и CGFloat
в зависимости от архитектуры:
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
}
Конечно, для этого макроса/константы компилятора (для Mac мы можем использовать INTEL_X86
, например), но я не смог найти это в 64-битном переход.
Как определить, для какой архитектуры строится?