TLDR: как вызвать стандартный код с плавающей запятой таким образом, чтобы компилировать 32- и 64-битные CGFloats без предупреждений?
CGFloat определяется как double или float, в зависимости от настроек компилятораи платформа.Я пытаюсь написать код, который хорошо работает в обеих ситуациях, не генерируя много предупреждений.
Когда я использую такие функции, как floor, abs, ceil и другие простые операции с плавающей запятой, я получаю предупреждения о значенияхбыть усеченным.Например:
предупреждение: неявное преобразование сокращает 64-битное значение до 32-битного
Меня не беспокоит правильность или потеря точности вычислений, поскольку я понимаю, что я мог бы просто использовать версии всех функций двойной точности все время (floor вместо floorf и т. д.);однако я должен был бы терпеть эти ошибки.
Есть ли способ написать чистый код, который поддерживает как 32-битные, так и 64-битные операции с плавающей запятой, без необходимости использования большого количества #ifdef __ LP64 __, илинаписать функции-оболочки для всех стандартных функций с плавающей запятой?