ошибка компиляции при изменении переменной с char на String
У меня есть код с этими двумя строками:
char handshakecode = "S"; // Capital S
char receive;
Строки кода помещаются в отдельный void
, а не в setup
или loop
.
Когда я меняю две переменные с char
на String
, я получаю сообщение об ошибке (полная ошибка внизу) при компиляции в Arduino или проверке кода.
String handshakecode = "S"; // Capital S
String receive;
Когда я вырезаю частичный код только для этого конкретного void
, он компилируется нормально, поэтому он должен быть в сочетании с остальным кодом, который я на данный момент не включил в этот пост. .
Это известная ошибка или я что-то не так делаю?
В функции "глобальные конструкторы с ключом 65535_0_WFS_v0.3.ino.cpp.o":
lto1.exe: внутренняя ошибка компилятора: ошибка сегментации
Пожалуйста, отправьте полный отчет об ошибке,
с предварительно обработанным исходным кодом, если это необходимо.
Для получения инструкций см. http://gcc.gnu.org/bugs.html.
lto-wrapper.exe: фатальная ошибка: C:\Program Файлы\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.15.0_x86__mdqgnx93n4wtt\hardware\tools\avr/bin/avr-gcc возвращен 1 статус выхода
компиляция прекращена.
c:/программа файлы/windowsapps/arduinollc.arduinoide_1.8.15.0_x86__mdqgnx93n4wtt/оборудование/инструменты/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/bin/ld .Exe: ошибка: ошибка lto-wrapper
collect2.exe: ошибка: ld вернул 1 статус выхода
статус выхода 1 Ошибка компиляции для платы Arduino/Genuino Mega или Mega 2560.
@Stefan Bahrawy, 👍0
Обсуждение1 ответ
Лучший ответ:
Эта ошибка характерна для версии 5.4.0-atmel3.6.1-arduino2 avr-gcc, используемой платами Arduino AVR 1.6.22 и новее. Об этом сообщается здесь:
https://github.com/arduino/Arduino/issues/7949
Вот обходной путь:
- Инструменты > Плата > Менеджер плат
- Дождитесь окончания загрузки.
- При наведении указателя мыши на «Arduino AVR Boards» вы увидите раскрывающееся меню «Выбрать версию». Выберите "1.6.21".
- Нажмите "Установить".
- Дождитесь завершения установки.
- Нажмите "Закрыть".
Из-за ошибки этот обходной путь не работает с Arduino IDE 1.8.6, но будет работать с любой другой версией Arduino IDE.
Если у вас установлен флажок Файл > Настройки > Проверять наличие обновлений при запуске, среда разработки Arduino может время от времени уведомлять вас о доступности новой версии плат Arduino AVR, поэтому вам следует воздержаться от обновления. вернуться к новой версии Arduino AVR Boards, иначе вы снова увидите ошибку сегментации.
- Ошибка компиляции кода для Arduino/Genuino Uno
- Проблема компиляции DigiSpark AT Tiny85?
- Собственное определение типа с использованием структуры не дает имени типу
- UECIDE: ошибка компоновщика с библиотекой U8g2
- Ошибка: expected unqualified-id before 'if'
- Ошибка : заблудиться '\' в программе
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Будет ли бесконечный цикл внутри loop() работать быстрее?
это не похоже на ошибку компиляции... это похоже на сбой программы компилятора... попробуйте переустановить Arduino IDE, @jsotola
Это известная ошибка версии IDE для магазина Windows. Удалите его и загрузите с Arduino., @Majenko
@Majenko это происходит и с обычной версией Arduino IDE., @per1234
Интересный. Раньше это была просто версия приложения. Я предполагаю, что они испортили реальную версию. Думаю, еще одна причина перейти на [UECIDE](https://uecide.org) :), @Majenko
Я столкнулся с ошибкой, используя стандартную среду разработки Arduino IDE, когда новый инструментарий все еще находился в стадии бета-тестирования, а также в производственной версии. Обычно я использую самые последние версии всего, но я застрял с платами Arduino AVR 1.6.21, пока это не будет исправлено., @per1234
Я только что сделал обзор всех случаев ошибки, и 22 использовали версию Arduino IDE для Windows, 17 использовали обычную Arduino IDE, 3 не показывали, какую версию они использовали. Во всех случаях ОС была Windows. Так что это хорошее доказательство того, что это совершенно не связано с используемой версией IDE., @per1234