Zastąpienie `fabs`,` fmax` itp. Do użytku z CGFloat na 64-bitowych urządzeniach z systemem iOS

Pytanie

Rozważ taki kod układu:

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;

W jaki sposób trzecia linia powinna zostać przepisana przy pomocy 64-bitowych urządzeń iOS?

(Obecny kod nie bierze pod uwagę, czyyCoordinateOfSomeOtherView jestfloat lub adouble.)

Opcje

Kilka opcji (nie jestem pewien, co jest najlepsze):

1. Zdefiniuj moje własne makro
#if defined(__LP64__) && __LP64__
#define cgfmax(x,y) fmaxf(x,y)
#else
#define cgfmax(x,y) fmax(x,y)
#endif

Mogłem wtedy wymienićfmax zcgfmax.

2. Użyjtgmath.h

Ta odpowiedź przepełnienia stosu od 2011 sugeruje zastąpieniemath.h ztgmath.h. Zastępuje to implementacjęfmax z jednym, który dzwoni__typeof__ w każdym argumencie i wraca równieżfmax lubfmaxf w zależności od typów argumentów.

3. Zignoruj ​​ten problem

Ponieważ CGFloats odnoszą się do układu, utrata danych potencjalnie poniesiona podczas przechowywaniafloat w adouble zazwyczaj będzie nieistotny. Oznacza to, że będą reprezentować maleńkie ułamki pikseli.

streszczenie

Szukam innych opcji lub przydatnych porad od kogoś, kto wcześniej dokonał przejścia od 32 do 64 bitów.

questionAnswers(1)

yourAnswerToTheQuestion