Необъяснимое сообщение об ошибке C++: слишком много инициализаторовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Необъяснимое сообщение об ошибке C++: слишком много инициализаторов

Сообщение Anonymous »

Я компилирую файл C++ (на Raspberry Pi5 под управлением Debian 12 с Gnu C++), и этот файл автоматически генерируется из файла данных XML. В файле есть только несколько константных массивов структур. В одном из массивов есть внутренний массив структур, и компилятор жалуется, что слишком много инициализаторов. Для меня это не имеет смысла, но, возможно, у меня инициализаторы каким-то образом неправильно отформатированы.
Соответствующие фрагменты кода:
в заголовочном файле:
enum SignalNames
{
WestEN,
WestF1,
WestFM,
WestYardEnter,
WestYardEnter2_4,
EastYeardEntry1_3,
EastYardEnter2_4,
EastExit4__Dwarf_,
NUM_SIGNALS
};
struct SignalConfig {
static constexpr uint ASPECTCOUNT = 5;
enum Aspect
{
Stop,
Slow_Aproach,
Slow_Clear,
Aproach,
Clear,
Hold,
Go,
UNUSED
};
struct {
Aspect aspect;
openlcb::EventId eventid;
} aspects[ASPECTCOUNT];
};
extern const SignalConfig SignalsCfg[NUM_SIGNALS];

в файле C++:
const SignalConfig SignalsCfg[NUM_SIGNALS] = {
{
{SignalConfig::Stop, 0000000000000000LL},
{SignalConfig::Slow_Aproach, 0000000000000000LL},
{SignalConfig::Slow_Clear, 0000000000000000LL},
{SignalConfig::Aproach, 0000000000000000LL},
{SignalConfig::Clear, 0000000000000000LL},
},// WestEN
{
{SignalConfig::Stop, 0000000000000000LL},
{SignalConfig::Aproach, 0000000000000000LL},
{SignalConfig::Slow_Clear, 0000000000000000LL},
{SignalConfig::UNUSED, 0LL},
{SignalConfig::UNUSED, 0LL},
},// WestF1
{
{SignalConfig::Stop, 0000000000000000LL},
{SignalConfig::Aproach, 0000000000000000LL},
{SignalConfig::Clear, 0000000000000000LL},
{SignalConfig::UNUSED, 0LL},
{SignalConfig::UNUSED, 0LL},
},// WestFM
{
{SignalConfig::Stop, 0000000000000000LL},
{SignalConfig::Slow_Aproach, 0000000000000000LL},
{SignalConfig::Slow_Clear, 0000000000000000LL},
{SignalConfig::Aproach, 0000000000000000LL},
{SignalConfig::Clear, 0000000000000000LL},
},// WestYardEnter
{
{SignalConfig::Stop, 0000000000000000LL},
{SignalConfig::Slow_Aproach, 0000000000000000LL},
{SignalConfig::Slow_Clear, 0000000000000000LL},
{SignalConfig::Aproach, 0000000000000000LL},
{SignalConfig::Clear, 0000000000000000LL},
},// WestYardEnter2-4
{
{SignalConfig::Stop, 0000000000000000LL},
{SignalConfig::Slow_Aproach, 0000000000000000LL},
{SignalConfig::Slow_Clear, 0000000000000000LL},
{SignalConfig::Aproach, 0000000000000000LL},
{SignalConfig::Clear, 0000000000000000LL},
},// EastYeardEntry1-3
{
{SignalConfig::Stop, 0000000000000000LL},
{SignalConfig::Slow_Aproach, 0000000000000000LL},
{SignalConfig::Slow_Clear, 0000000000000000LL},
{SignalConfig::Aproach, 0000000000000000LL},
{SignalConfig::Clear, 0000000000000000LL},
},// EastYardEnter2-4
{
{SignalConfig::Hold, 0000000000000000LL},
{SignalConfig::Go, 0000000000000000LL},
{SignalConfig::UNUSED, 0LL},
{SignalConfig::UNUSED, 0LL},
{SignalConfig::UNUSED, 0LL},
},// EastExit4 (Dwarf)
}; // This is line 145

Сообщение об ошибке:
/home/heller/WendellDepotMusuem/Software/targets/linux.aarch64/WendellDepot.cxx:145:1: error: too many initializers for ‘const WendellDepot::SignalConfig’
145 | };
| ^
make[2]: *** [/home/heller/openmrn/etc/prog.mk:288: WendellDepot.o] Error 1


Подробнее здесь: https://stackoverflow.com/questions/793 ... itializers
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»