ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
3 мая
1327313 Топик полностью
ЫЫyкпy (05.07.2023 11:42, просмотров: 104) ответил Dingo на Не-не-не, не туда думаете. ;-) Хочется примерно так: #define ARR_SZ 5 | #define FILLER 0xc0de | FILL(array, FILLER) | FILL( array2, FILLER2) С возможностью несколько раз использовать в коде, в том числе изменив AR_SZ под конкретный случай. Как присвоение структур, только массива. И чтобы между {} было корректное количество инициализирующих значений.
Ниже 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).

Взирая на нынешнее состояние отечества моего с таковым оком, каковое может иметь человек, воспитанный по строгим древним правилам, ... не могу я не дивиться, в сколь краткое время повредились повсюдно нравы в России. (с) кн. М.М. Щербатов.