При использовании с фиксированной запятой вы можете написать программу, которая принимает значения с плавающей запятой и преобразует их в правильные, постоянные инициализаторы для типа с фиксированной запятой, поэтому вы эффективно добавляете шаг в компиляцию, которая генерирует значения с фиксированной запятой.
Одним из преимуществ этого будет то, что вы можете затем определить и объявить свои константы с помощью const
, чтобы они не изменились во время выполнения - тогда как с функциями инициализации, конечно, значения должны быть модифицируемыми, потому что они рассчитываются один раз.
Я имею в виду написать простую программу, которая может сканировать формульные строки, которые могут выглядеть следующим образом:
const double somename = 3.14159;
это прочтет это и сгенерирует:
const fixedpoint_t somename = { ...whatever is needed... };
Вы разрабатываете эту операцию, чтобы упростить управление обеими нотациями, поэтому, возможно, ваш преобразователь всегда читает файл, а иногда переписывает его.
datafile.c: datafile.constants converter
converter datafile.constants > datafile.c