1) У меня есть много констант в моем C algo. 2) мой код работает как с плавающей точкой, так и с фиксированной точкой.инициализировать переменную статически (во время компиляции)
Прямо сейчас эти константы инициализируются функцией float2fixed, в результате чего в плавающей точке она ничего не делает, а в фиксированной точке находит свое фиксированное представление. Например, 0.5f остается 0.5f, если работает в плавающей точке, тогда как использует процедуру pow() и становится 32768, если работает в фиксированной точке, а представление с фиксированной точкой - Qx.16.
Это легко поддерживать, но для вычисления этих констант в фиксированной точке требуется много времени (pow - функция с плавающей точкой). В C++ я бы использовал некоторое метапрограммирование, поэтому компилятор вычисляет эти значения во время компиляции, поэтому во время выполнения нет никакого удара. Но в C это невозможно. Или это? Кто-нибудь знает такую уловку? Является ли какой-либо компилятор достаточно умным для этого?
С нетерпением жду любых ответов.
Почему вы не можете использовать C++? – Zifre
C не поддерживает макропроцессоры препроцессора? – CookieOfFortune
@CookieOfFortune: макросы не так сильны, как C++-шаблоны (они даже не завершены Turing), но это возможно. – Zifre