0

我需要这样的东西:

char font[128][8] = {{0}};

font[0][] = {0, 0b00000000, 0b11111100, 0b00010010, 0b00010010, 0b11111100, 0b00000000, 0};
font[1][] = {...}

但在 c99 中,我得到“'{' token 之前的预期表达式”。请帮忙。

4

3 回答 3

1

声明数组时只能使用初始化列表 ( {...}),这就是您收到错误的原因。您不能为数组赋值,这就是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.

于 2013-05-09T11:20:57.143 回答
0
char font[128][8] = {
    {0, 0b00000000, 0b11111100, 0b00010010, 0b00010010, 0b11111100, 0b00000000, 0},//font[0]
    /*{...}*///font[1]
};
于 2013-05-09T11:14:08.773 回答
0

试试看 :

    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
于 2013-05-09T11:15:12.153 回答