只需添加const
. This
extern const BitChar BitFont[];
...
const BitChar BitFont[] = {
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,2, // 32 - Space
B10000000,B10000000,B10000000,B10000000,B10000000,B00000000,B10000000,B00000000,1, // 33 - !
...
B00000000,B00000000,B11100000,B11100000,B11100000,B00000000,B00000000,B00000000,3, // 127 - Unknown
};
在 C 中应该工作得很好。(假设你的编译器知道这些是什么B00000000
标识符的意思。)
这在 C++ 中也能完美地工作。 C++ 版本中唯一可能出现错误的地方是基于 C++ 特定的属性const
。如果定义没有看到声明,那么您必须显式指定extern
定义中也有
extern const BitChar BitFont[] = {
B00000000
...
因为在C++中const
物体有internal默认链接。但是,如果声明中已经包含extern
并且定义可以看到声明,那么extern
定义中是可选的。
您引用的错误消息表明您正在代码中的某个位置尝试初始化类型的引用BitChar &
(aka unsigned char (&)[9]
) 带有 const 限定BitChar
大批。这是行不通的,因为它违反了常量正确性的基本规则。该引用也必须成为 const 限定的,即它必须更改为const BitChar &
(aka const unsigned char (&)[9]
).