TLDR:如何以無需警告編譯32位和64位CGFloats的方式調用標準浮點代碼?CGFloat:round,floor,abs和32/64位精度
根據編譯器設置和平臺,CGFloat被定義爲double或float。我試圖編寫在兩種情況下運行良好的代碼,而不會產生很多警告。
當我使用諸如floor,abs,ceil和其他簡單浮點運算的函數時,我收到了有關值被截斷的警告。例如:
警告:隱式轉換縮短64位的值成一個32位的值
我不關心正確性或在計算中的精度的損失,因爲我知道我可以隨時使用所有功能的雙精度版本(floorf代替floorf等);然而,我將不得不容忍這些錯誤。
有沒有一種方法可以乾淨地編寫支持32位和64位浮點數的代碼,而不必使用大量的#ifdef __ LP64 __,或者爲所有標準浮點函數編寫包裝函數?
現在我知道該怎麼尋找,我發現這個問題:http://stackoverflow.com/questions/ 5352457 /基於cgfloat的數學函數 – leecbaker
請注意,在Xcode 6.1中,如果啓用了模塊,則tgmath不起作用。請參閱http://stackoverflow.com/q/23333287/449161 –