Определение статических данных как языковой признак - PullRequest
0 голосов
/ 15 марта 2011

Я пишу программу на C ++, в которой я использую некоторые постоянные данные. Я собираю эти данные процедурно при запуске и больше никогда не меняю их. Я знаю, что в идеале эти данные должны быть статическими данными в двоичных файлах, но это не так, поскольку сначала мне нужно их построить.

В C ++ я мог бы определять static const s членов в классах с этими данными или просто глобальных const s. При этом у меня будут статические данные в двоичных файлах, но тогда я не смогу программировать их содержимое. Я должен был бы построить их в другом месте и вставить результат в код. В моем случае это будет набор двоичных данных, некрасиво и бессмысленно закодированных внутри исходного файла.

Итак, я начал задаваться вопросом, есть ли язык, поддерживающий такую ​​функцию, которая позволяет мне определять свои статические данные процедурно, но которая разрешает их во время компиляции и встраивает в двоичные файлы? Может ли какая-либо оптимизация справиться с этими случаями? Если процедура / функция, которая генерирует данные, не принимает внешних параметров и имеет предсказуемые результаты, она может быть безопасно оптимизирована с результатами компилятором. Компиляторы идут по этому пути? Любые языки, которые вы знаете, явно относятся к этому вопросу?

Я знаю о препроцессоре Си, но на самом деле он не совместим с Тьюрингом, и его синтаксис не так привлекателен, как модификатор функции, который говорит, что его нужно разрешить во время компиляции.

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Создайте программу для генерации данных (она у вас уже есть), выведите ее в C ++, добавьте генерацию в ваш Makefile и используйте сгенерированные данные с #include.

0 голосов
/ 15 марта 2011

Шаблоны C ++ полны по Тьюрингу и часто используются для вычисления констант времени компиляции.

...