Замена на `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

2. Используйтеtgmath.h

Ответ на переполнение стека с 2011 года предлагает заменитьmath.h сtgmath.h, Это заменяет реализациюfmax с тем, который звонит__typeof__ на каждый аргумент и возвращает либоfmax или жеfmaxf в зависимости от типа аргумента.

3. Игнорировать эту проблему

Поскольку CGFloats относятся к макету, потеря данных может бытьfloat вdouble обычно будет незначительным. То есть ониЯ буду представлять крошечные фракции пикселей.

SummaryI»

ищу другие варианты или полезные советы от кого-то, ктоПеред этим был выполнен переход с 32-битного на 64-битный режим.

Ответы на вопрос(1)

Ваш ответ на вопрос