[英]Arduino IDE Initialize char[] in a separate file
我有一个很大的char [],它包含一个位图字体,用于在OLED显示器上显示数字。 数组的初始化位于我的cpp文件的开头,这只会使文件更难阅读。 我必须相信,有一种方法可以在单独的文件中定义此数组,但是我没有主意。
我有一个Arduino的ino文件,并且我将ino文件留为空白,因此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.
当代码全部放在ino文件中时,它可以正常工作,但是出于可读性的考虑,我不希望代码中的同一个文件中包含巨大的字体位图char []。
我相信我可以使用字体创建一个库,但这是解决此问题的最佳方法吗?
尝试在之前添加extern
const unsigned char font[];
在oled.cpp
如果没有extern
,编译器将尝试为变量定义和分配缓冲区。 然后,不知道应该为不完整类型分配多少内存,它将失败。
放
extern const unsigned char font[];
放在头文件中,并从两个地方都包含它,而不是将其放在您使用的所有位置。 这将防止声明和定义之间的不一致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.