Инициализация констант - Error[Pe028]: expression must have a constant value - C (СИ)
Формулировка задачи:
Здравствуйте.
Помогите решить проблему.
Есть код:
компилятор выдает 2 ошибки "Error[Pe028]: expression must have a constant value; Error[Pe028]: expression must have a constant value" в строке в указанных местах "DESC Desc[] = { {1,Chans[0]}, {2,Chans[1]} };".
Вроде с типами все ОК. Все переменные - константы, указатели - константные на константы. Что не так?
typedef const struct _DESC DESC, *PDESC; typedef const struct _CHANNEL CHANNEL, *PCHANNEL; struct _CHANNEL { int k; PDESC pDesc; }; struct _DESC { int k; PCHANNEL ChannelArray; }; extern const PCHANNEL Chans[];//будет использоваться в других местах (других файлах) DESC Desc[] = { { 1, Chans[ 0 ] }, { 2, Chans[ 1 ] } }; CHANNEL Chan0[] = { { 1, Desc }, { 2, Desc }, { 3, Desc } }; CHANNEL Chan1[] = { { 1, Desc + 1 }, { 2, Desc + 1 }, { 3, Desc + 1 }, { 4, Desc + 1 } }; const PCHANNEL Chans[] = { { Chan0 }, { Chan1 } };
Решение задачи: «Инициализация констант - Error[Pe028]: expression must have a constant value»
textual
Листинг программы
extern CHANNEL Chan0[]; extern CHANNEL Chan1[]; DESC Desc[] = { { 1, Chan0 }, { 2, Chan1 } };
Объяснение кода листинга программы
В данном коде происходит инициализация массива DESC с двумя элементами, где каждый элемент содержит два значения: номер канала и указатель на массив каналов.
extern CHANNEL Chan0[];
- объявление массива Chan0, который содержит некоторое количество каналов.extern CHANNEL Chan1[];
- объявление массива Chan1, который содержит некоторое количество каналов.DESC Desc[] = { { 1, Chan0 }, { 2, Chan1 } };
- инициализация массива Desc двумя элементами, где каждый элемент содержит номер канала и указатель на соответствующий массив каналов. Таким образом, список будет выглядеть следующим образом:- Название переменной: Chan0
- Значение: массив каналов
- Название переменной: Chan1
- Значение: массив каналов
- Название переменной: Desc
- Значение: массив описателей каналов, содержащий два элемента
- Элемент 1: номер канала - 1, указатель на массив Chan0
- Элемент 2: номер канала - 2, указатель на массив Chan1
- Значение: массив описателей каналов, содержащий два элемента
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д