2015-06-29 4 views
0

В моей программе используются 4 больших массива констант - 64 × 256 64-битных целых чисел. В настоящее время я использовал некоторый вспомогательный код для прекомполяции значений и отправки их в файл для копирования и вставки их в файлы программы. Это работает, но чувствует себя довольно мусором. Я вполне уверен, что должен быть намного более легкий способ их предварительного расчета. Они действительно должны быть постоянными!C++ инициализация очень большого массива констант, лучшая практика

Заранее спасибо.

+0

включая предварительно вычисленный стол - это еще один способ метапрограммирования - и не забудьте просто «включить» код сгенерированный (нет необходимости в ручном copypasta) – BeyelerStudios

ответ

4

Создайте файл в формате, который вы можете использовать с помощью директивы include. Затем используйте директиву #include для непосредственного использования файла.

your_64bit_type array[] = { 
    #include "precomputed.inc" 
}; 

Это вполне нормально при использовании предварительно вычисленной таблицы. Также посмотрите на XMACROS для другого способа использования таблиц файлов.

+0

Спасибо: я сделаю так. Довольно уверен, что я смог бы разобраться, как заставить его работать во время процесса сборки из make-файла или с помощью какого-либо сценария оболочки. – user5060366

0

Ну, одним из способов сделать это было бы написать программу, которая выводит массивы в файл заголовка/источника. Если файл уже существует, не создавайте его.

Затем вы просто убедитесь, что эта программа запускается во время процесса сборки. В вашей среде IDE должна быть предусмотрена возможность ее запуска. Если нет, я уверен, что вы можете добавить его в makefile - не знаю, не трогали их вручную более чем за 20 лет.

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

Смежные вопросы