0

私はこのようなものが必要です:

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

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

しかし、c99 では、「'{' トークンの前に期待される式」が表示されます。助けてください。

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(つまり、ループを使用)。

  • memcpyuint64_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 に答える