У меня есть большой char [], который содержит растровый шрифт, который я использую для отображения чисел на OLED-дисплее. Инициализация массива находится в начале моего файла cpp, который просто делает файл более трудным для чтения. Я должен поверить, что есть способ определить этот массив в отдельном файле, но я не в идеях.Arduino IDE Инициализировать char [] в отдельном файле
У меня есть Arduino ина файл, и я оставил файл Ина в основном пустым, так что есть меньше шансов программного обеспечения Arduino спутать:
#include <SPI.h>
#include <Adafruit_SSD1306ms.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <RFduinoBLE.h>
Я тогда новую вкладку font.cpp, которая содержит массив определения шрифта:
#include <Arduino.h>
extern const unsigned char font[] PROGMEM = {
B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00001111, B11110000, B00000000,
B00000000, B00000000, B01111111, B11111110, B00000000,
B00000000, B00000000, B11111111, B11111111, B00000000,
...
B00000000, B00000000, B00000000, B00000000, B00000000
};
Я тогда еще вкладка oled.cpp, который содержит код для отображения номера на дисплее:
#include <SPI.h>
#include <Adafruit_SSD1306ms.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <RFduinoBLE.h>
const unsigned char font[];
void DrawNumber(char aValue[], uint size) {
// draws the proper numbers on the display using the font
}
void setup() {
}
void loop {
}
Выход из компилятора выглядит следующим образом:
Arduino: 1.6.6 (Windows 7), Board: "RFduino"
oled.cpp:7: error: uninitialized const 'font' [-fpermissive]
const unsigned char font[];
^
oled.cpp:7: error: storage size of 'font' isn't known
const unsigned char font[];
^
exit status 1
uninitialized const 'font' [-fpermissive]
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Когда код все в файл ина, он отлично работает, но я предпочитаю не иметь огромный символ растрового шрифта [] в том же файл с кодом для удобочитаемости.
Я считаю, что я мог бы создать библиотеку с шрифтом, но это лучший способ решить эту проблему?
Ну, ошибка ясна. Теперь идите и исправьте. Вы должны быть более конкретными. – Downvoter
Почему возникает первая ошибка? Я не понимаю, почему oled.cpp уже не имеет шрифта [] в области, когда он определен как extern и инициализирован. –
Поскольку определение 'font []' находится в другой единицы перевода (что-то вроде файла), и поэтому компилятор (а не компоновщик) не знает, что определение e, ists. – MikeCAT