我需要这样的东西:
char font[128][8] = {{0}};
font[0][] = {0, 0b00000000, 0b11111100, 0b00010010, 0b00010010, 0b11111100, 0b00000000, 0};
font[1][] = {...}
但在 c99 中,我得到“'{' token 之前的预期表达式”。请帮忙。
声明数组时只能使用初始化列表 ( {...}
),这就是您收到错误的原因。您不能为数组赋值,这就是font[0]
(a char[]
)。
您有 3 个选项:
char font[128][8] = {
{0, 0b00000000, 0b11111100, 0b00010010, 0b00010010, 0b11111100, 0b00000000, 0};
{...}
}
将每个值分别分配给数组中的一个元素:font[0][0] = x
, ..., font[127][7] = y
(即使用循环)。
memcpy
一次从uint64_t
( sizeof(font[0]) = 8
) 或其他任何您可以整齐/有效地存储数据的地方阻塞。
可能还值得注意的是,二进制常量是 C 扩展,它,如果您正在使用无符号数据,您可能应该显式使用char
是有符号的unsigned char
.
char font[128][8] = {
{0, 0b00000000, 0b11111100, 0b00010010, 0b00010010, 0b11111100, 0b00000000, 0},//font[0]
/*{...}*///font[1]
};
试试看 :
char font[128][8] = {{0}};
char a[8] = {0, 0b00000000, 0b11111100, 0b00010010, 0b00010010, 0b11111100, 0b00000000, 0};
//Take array a to store values
for(int i = 0;i<8;i++)
font[0][i] = a[i];
//Assign value of a to font