Ниже il-2 привел пример использования техники которая называется X-macro.
Таким способом можно сгенерировать в том числе и объявление массива
с инициализацией: int arr[] ={
#define _RC_ARRAY(ind, val) [ind] = val,
#include "rc_array.h"
#undef _RC_ARRAY
};
Получится текст типа такого, только INDEX0, INDEX1 тоже будут заменены на их значения:
int arr[] ={
[INDEX0]=10, [INDEX1]=110, // и т.д.
};
Если массив в RAM (и глобальный), то инициализация будет выполнена копированием при старте программы, а если описать как const то просто нужные числа будут размещены в ROM (Flash).