0

atmega32 を使用した AVR プログラミングで、配列に値を割り当てることができません。エラーが発生しています:

読み取り専用 str[i] の代入

私は何を間違っていますか?

私のコードは次のとおりです。

const char str[1000];
void Serial_tx(unsigned char ch)
{
  for (i = 0; i < 10; i++)
  {
    str[i] = ch;
  }
}
4

2 に答える 2

3

配列は宣言されconstており、変更してはならないことを示しています。constマイクロコントローラでは、変数が (事実上) 読み取り専用メモリ (フラッシュ、EEPROM、または ROM など) に格納される可能性があるため、これはさらに意味があります。

于 2013-06-29T11:23:38.790 に答える
0

ジェリーに完全に同意...

const として配列が必要な場合は追加するだけで、次のように宣言/定義する必要があります。

const char str[11]={'0','1','2','3','4','5','6','7','8','9',0 };

-しかし、これは、実行時に str[] しか読み取れないことを意味します!!!

実行時に str の内容を変更したい場合は、const にすることはできません。

char str[1000]={0};

- これにより、実行時に読み取り/書き込みアクセスが可能になります

非 const 変数、スタック、および C/C++ 言語エンジンの合計サイズは、ターゲット デバイスの RAM メモリを超えてはならないことに注意してください !!!
その場合、コンパイラは通常何らかのエラーをスローします...ただし、常にではありません(スタックが完全に考慮されていない場合があります)

于 2013-12-03T23:38:07.957 に答える