Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Arduino IDE在单独的文件中初始化字符[]_C++_Arduino - Fatal编程技术网

C++ Arduino IDE在单独的文件中初始化字符[]

C++ Arduino IDE在单独的文件中初始化字符[],c++,arduino,C++,Arduino,我有一个大字符[],它包含一个位图字体,我用它在OLED显示器上显示数字。数组的初始化在我的cpp文件的开头,这使文件更难读取。我不得不相信,有一种方法可以在一个单独的文件中定义这个数组,但我没有办法 我有一个Arduino文件,我将ino文件大部分保留为空白,以减少Arduino软件被混淆的可能性: #include <SPI.h> #include <Adafruit_SSD1306ms.h> #include <Wire.h> #include <

我有一个大字符[],它包含一个位图字体,我用它在OLED显示器上显示数字。数组的初始化在我的cpp文件的开头,这使文件更难读取。我不得不相信,有一种方法可以在一个单独的文件中定义这个数组,但我没有办法

我有一个Arduino文件,我将ino文件大部分保留为空白,以减少Arduino软件被混淆的可能性:

#include <SPI.h>
#include <Adafruit_SSD1306ms.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <RFduinoBLE.h>
当代码都在ino文件中时,它工作得很好,但是出于可读性原因,我不希望将大字体位图char[]与代码放在同一个文件中


我相信我可以用这种字体创建一个库,但这是解决这个问题的最佳方法吗?

在之前尝试添加
extern

const unsigned char font[];
在oled.cpp中

如果没有
extern
,编译器将尝试为变量定义和分配缓冲区。
然后,由于不知道应该为不完整的类型分配多少内存,它将失败。

请尝试在之前添加
extern

const unsigned char font[];
在oled.cpp中

如果没有
extern
,编译器将尝试为变量定义和分配缓冲区。 然后,由于不知道应该为不完整的类型分配多少内存,它将失败。

put

extern const unsigned char font[];
在头文件中,从两个位置包含它,而不是将它放在使用它的任何地方。这将防止声明和定义之间的不一致。

put

extern const unsigned char font[];

在头文件中,从两个位置包含它,而不是将它放在使用它的任何地方。这将防止声明和定义之间出现不一致。

好吧,错误是显而易见的。现在去修理它吧。您需要更具体一些。为什么会出现第一个错误?我不明白为什么oled.cpp在被定义为extern并初始化时在作用域中没有font[],因为
font[]
的定义在另一个翻译单元(类似于文件)中,因此编译器(不是链接器)不知道定义e,ists。好吧,错误很明显。现在去修理它吧。您需要更具体一些。为什么会出现第一个错误?我不明白为什么oled.cpp在定义为extern并初始化时在作用域中没有font[],因为
font[]
的定义在另一个翻译单元(类似于文件)中,因此编译器(不是链接器)不知道定义e,ists。就是这样!我以为我已经试过了,但显然没有。我滚动的手指谢谢你,就这样!我以为我已经试过了,但显然没有。我滚动的手指谢谢你。
extern const unsigned char font[];