Оптимизация с плавающей запятой во время компиляции GCC

Я разрабатываю для платформы AVR, и у меня есть вопрос. Я не хочу, чтобы библиотека с плавающей запятой была связана с моим кодом, но мне нравится концепция наличия аналоговых значений в диапазоне 0,0 ... 1,0 вместо 0 ... 255 и 0 ... 1023, в зависимости от даже использую ли я порт как вход или как выход.

Поэтому я решил умножить аргументы функций ввода / вывода на 1023,0 и 255,0 соответственно. Теперь мой вопрос: если я реализую такое деление:

#define analog_out(port, bit) _analog_out(port, ((uint8_t)((bit) * 255.0)))

будет ли GCC (с включенным флагом -O3) оптимизировать умножения с плавающей запятой во время компиляции, известные во время компиляции и приводящие к целочисленному типу, в целое число. операции? (Я знаю, что при использовании этих макросов с непостоянными аргументами оптимизация невозможна; я просто хочу знать, будет ли это сделано в другом случае.)

5
задан 5 August 2013 в 07:47
поделиться