Вероятно, наивный вопрос - я использовал программу 20 лет назад и не кодировал много с тех пор. Моя память о том, как работает C preprocessor
, сильно атрофировалась с тех пор...
Я пишу очень простую программу C
, и я пытаюсь объявить несколько статических глобальных массивов, но размер arrays
будет зависеть (на нетривиальном пути) от переменной MODE
, Что-то вроде упрощенного примера ниже.
Два быстрых пункта: я знаю, что могу просто размер arrays
в соответствии с наибольшим размером, необходимым для любого MODE
, но я не хочу этого, потому что (в отличие от упрощенного примера ниже) иногда несколько эти размеры будут чрезвычайно большими, а другие - крошечными.
Кроме того, я хочу использовать статически определенные глобальные массивы, а не динамически выделять их во время выполнения. Я хочу, чтобы компилятор имел размеры во время компиляции.
//** Simplified example of what I'd like to do **//
#define SIZE_LIST_1[5] = {2, 7, 23, 33, 12, 76} // I don't think this is valid syntax
#define SIZE_LIST_2[5] = {11, 65, 222, 112, 444}
#define MODE 4
#define S1 SIZE_LIST_1[MODE]
#define S2 SIZE_LIST_2[MODE]
int a[S1], b[S2];