配列を順番に初期化できません。実際には、私は64の長さのメッセージを構築したいと思います。64の配列インデックスを提供すると、コードは長く見えるようになります。私は冗長を避けるために順番にそれをやりたいコードの冗長性を避けるために、配列を順番に初期化できません。
しかし、私はこのbuf[]
のように配列を初期化し、私はどちらか動作しませんでしたこともbuf[6]
として試み。
error: expected expression before ‘]’ token
どのようにすればいいですか? Cでは、宣言ではなく、別の行の配列を初期化することはできませんか?
ARRAY_SIZEは配列インデックスの数を返します。
コード:あなたが使用することはできません
void a_test(char in) {
uint8_t buf[256];
int i;
char cmd = in;
if (cmd == 'a') {
// it doesn't work like this
buf[] = { 0xfe, 0xb0, 0x01, 0x22, 0x00, 0x00};
/* it works like this
buf[0] = 0xfe;
buf[1] = 0xb0;
buf[2] = 0x01;
buf[3] = 0x22;
buf[4] = 0x00;
buf[5] = 0x00; */
}
if (cmd == 'b') {
buf[] = { 0x44, 0xb0, 0x01, 0x03, 0x00};
}
for (i = 0; i < ARRAY_SIZE(buf); i++) {
printf("%02x ", buf[i]);
}
}
int main() {
a_test('a');
return 0;
}
配列が代入演算子を持っていないです。 –