Substituição para `fabs`,` fmax`, etc. para uso com CGFloat em dispositivos iOS de 64 bits

Questão

Considere o código do layout como este:

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;

Como a terceira linha deve ser reescrita com suporte para dispositivos iOS de 64 bits?

(O código atual não leva em consideração seyCoordinateOfSomeOtherView é umfloat ou umdouble.)

Opções

Algumas opções (não sei qual é o melhor):

1. Defina minha própria macro
#if defined(__LP64__) && __LP64__
#define cgfmax(x,y) fmaxf(x,y)
#else
#define cgfmax(x,y) fmax(x,y)
#endif

Eu poderia então substituirfmax comcgfmax.

2. Usetgmath.h

Esta resposta de estouro de pilha a partir de 2011 sugere a substituiçãomath.h comtgmath.h. Isso substitui a implementação defmax com um que chama__typeof__ em cada argumento e retornafmax oufmaxf dependendo dos tipos de argumento.

3. Ignore esta questão

Visto que CGFloats se relacionam com o layout, a perda de dadosfloat dentro dedouble geralmente será insignificante. Ou seja, eles representarão pequenas frações de pixels.

Resumo

Estou procurando outras opções ou conselhos úteis de alguém que tenha feito uma transição de 32 bits para 64 bits antes.

questionAnswers(1)

yourAnswerToTheQuestion