繁体   English   中英

Arduino IDE在单独的文件中初始化char []

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM