Замена на `fabs`,` fmax` и т. Д. Для использования с CGFloat на 64-битных устройствах iOS
Рассмотрим код компоновки следующим образом:
CGFloat descriptionHeight = // height of a paragraph of text with zero or more words;
CGFloat imageHeight = // height of an image;
CGFloat yCoordinateOfSomeOtherView = fmax(descriptionHeight, imageHeight) + 5.0f;
Как следует переписать третью строку с поддержкой 64-битных устройств iOS?
(Текущий код непринять во внимание,yCoordinateOfSomeOtherView
этоfloat
илиdouble
.)
Несколько вариантов (яя не уверен, что лучше)
1. Определите мой собственный макрос#if defined(__LP64__) && __LP64__
#define cgfmax(x,y) fmaxf(x,y)
#else
#define cgfmax(x,y) fmax(x,y)
#endif
Я мог бы тогда заменитьfmax
с .cgfmax
tgmath.h
Ответ на переполнение стека с 2011 года предлагает заменитьmath.h
сtgmath.h
, Это заменяет реализациюfmax
с тем, который звонит__typeof__
на каждый аргумент и возвращает либоfmax
или жеfmaxf
в зависимости от типа аргумента.
Поскольку CGFloats относятся к макету, потеря данных может бытьfloat
вdouble
обычно будет незначительным. То есть ониЯ буду представлять крошечные фракции пикселей.
ищу другие варианты или полезные советы от кого-то, ктоПеред этим был выполнен переход с 32-битного на 64-битный режим.