Привет имый проект распознает двойные определения переменных, которые не существуют 2 раза. Я полагаю, что каким-то образом, изменив мой код и перекомпилировав его, он застрял.
LedMatrix7219.cpp.o:(.data.Alphaletter+0x0): множественное определение `Alphaletter' LedController.cpp.o:(.data.Alphaletter+0x0): впервые определено здесь
LedMatrix7219.cpp.o:В функции `loop' LedController.cpp.o:(.bss.arr+0x0): впервые определено здесь
LedMatrix7219.cpp.o:В функции `loop' LedController.cpp.o:(.data.Alphaletter2+0x0): впервые определено здесь
collect2.exe *: ошибка: ld вернул 1 статус выхода
У меня есть класс LedController и заголовок LettersDefinition.h
Все заголовки начинаются так:
Я включаю структуру и перечисление из LetterDefinition.h в LedController, поэтому в заголовке мне нужно включить LetterDefinition.h, чтобы сделать определенный удар.
#ifndef __LEDCONTROLLER_H__
#define __LEDCONTROLLER_H__
#include <Arduino.h>
#include "LettersDefinition.h"
LetterStruct finalText;
String theText="Test";
void test();
//it does some extra staff
#endif //__LEDCONTROLLER_H__
И заголовок письма определение.
#ifndef LETTERSDEFINITION_H_
#define LETTERSDEFINITION_H_
#include "arduino.h"
#include <avr/pgmspace.h>
struct LetterStruct{
lettersEnum name;
uint8_t size;
uint8_t columnSize[5];
uint8_t data[18];
}Alphaletter;
#endif /* LETTERSDEFINITION_H_ */
И из моего основного файла .ide я вызываю тестовую функцию Ledcontroller и получаю ошибку, которую вы видите выше. Тестовая функция просто проверяет переменную LetterStruct.name и ничего больше.
Мой .ide выглядит примерно так:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
#include "LedController.h"
LedController controller;
void setup()
{
//irrelevant inits
}
void loop()
{
controller.test();
delay(2000);
}
Если я удаляю #include "LettersDefinition.h" из LedController.h, эта ошибка уступает место ошибке, заключающейся в том, что LetterStruct не определен в LedController.h, что нормально, поскольку мне нужно добавить LettersDefinition.h, чтобы быть определен.