私はこのようなものが必要です:
char font[128][8] = {{0}};
font[0][] = {0, 0b00000000, 0b11111100, 0b00010010, 0b00010010, 0b11111100, 0b00000000, 0};
font[1][] = {...}
しかし、c99 では、「'{' トークンの前に期待される式」が表示されます。助けてください。
配列を宣言するときは、イニシャライザ リスト ( ) しか使用できないため{...}
、エラーが発生します。配列に値を代入することはできません。これ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