В чём проблема при инициализация структуры с массивом внутри?

Начал переползать с C++ на C в CubeIDE и столкнулся с тем, что не могу проинициализировать структуру с массивом внутри.

typedef uint16_t raw_value_t;
typedef int16_t temp_value_t;

typedef struct
{
    raw_value_t raw_value;
    temp_value_t temp_value;
} calibration_entry_t;

typedef struct
{
    uint8_t P;
    uint8_t I;
    uint8_t D;
    calibration_entry_t calibration_table[4];
} tools_t;

calibration_entry_t DEF_CAL_TABLE_IRON[4] =
{
        {DEF_IRON_TOOL_T0, DEF_IRON_TOOL_ADC0},
        {DEF_IRON_TOOL_T1, DEF_IRON_TOOL_ADC1},
        {DEF_IRON_TOOL_T2, DEF_IRON_TOOL_ADC2},
        {DEF_IRON_TOOL_T3, DEF_IRON_TOOL_ADC3},
};

tools_t DEF_IRON_tools =
{
        DEF_IRON_TOOL_P,
        DEF_IRON_TOOL_I,
        DEF_IRON_TOOL_D,
        DEF_CAL_TABLE_IRON[4],              // <- здесь
};

Все DEF_ - значения по умолчанию из конфигурационного файла подключаемого ранее.

Собственно, компилятор ожидает от меня константного значения таблицы.

Что я делаю не так?


Ответы (0 шт):