質問
次のようなレイアウト コードを検討してください。
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;
3 行目は、64 ビット iOS デバイスのサポートでどのように書き直すべきですか?
yCoordinateOfSomeOtherView(現在のコードはが afloatか aかを考慮していません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__を返す実装に置き換えます。fmaxfmaxf
3. この問題を無視する
CGFloats はレイアウトに関連しているため、 を に格納する際に発生する可能性のあるデータ損失floatはdouble、通常は重要ではありません。つまり、それらはピクセルのごく一部を表します。
概要
以前に 32 ビットから 64 ビットへの移行を行ったことがある人から、他のオプションや役立つアドバイスを探しています。