Я компилирую файл 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
Необъяснимое сообщение об ошибке C++: слишком много инициализаторов ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1736020515
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79329482/inexplicical-c-error-message-too-many-initializers[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия