Я пишу программу на C ++, в которой я использую некоторые постоянные данные. Я собираю эти данные процедурно при запуске и больше никогда не меняю их. Я знаю, что в идеале эти данные должны быть статическими данными в двоичных файлах, но это не так, поскольку сначала мне нужно их построить.
В C ++ я мог бы определять static const
s членов в классах с этими данными или просто глобальных const
s. При этом у меня будут статические данные в двоичных файлах, но тогда я не смогу программировать их содержимое. Я должен был бы построить их в другом месте и вставить результат в код. В моем случае это будет набор двоичных данных, некрасиво и бессмысленно закодированных внутри исходного файла.
Итак, я начал задаваться вопросом, есть ли язык, поддерживающий такую функцию, которая позволяет мне определять свои статические данные процедурно, но которая разрешает их во время компиляции и встраивает в двоичные файлы? Может ли какая-либо оптимизация справиться с этими случаями? Если процедура / функция, которая генерирует данные, не принимает внешних параметров и имеет предсказуемые результаты, она может быть безопасно оптимизирована с результатами компилятором. Компиляторы идут по этому пути? Любые языки, которые вы знаете, явно относятся к этому вопросу?
Я знаю о препроцессоре Си, но на самом деле он не совместим с Тьюрингом, и его синтаксис не так привлекателен, как модификатор функции, который говорит, что его нужно разрешить во время компиляции.