atmega32 を使用した AVR プログラミングで、配列に値を割り当てることができません。エラーが発生しています:
読み取り専用 str[i] の代入
私は何を間違っていますか?
私のコードは次のとおりです。
const char str[1000];
void Serial_tx(unsigned char ch)
{
for (i = 0; i < 10; i++)
{
str[i] = ch;
}
}
atmega32 を使用した AVR プログラミングで、配列に値を割り当てることができません。エラーが発生しています:
読み取り専用 str[i] の代入
私は何を間違っていますか?
私のコードは次のとおりです。
const char str[1000];
void Serial_tx(unsigned char ch)
{
for (i = 0; i < 10; i++)
{
str[i] = ch;
}
}
配列は宣言されconst
ており、変更してはならないことを示しています。const
マイクロコントローラでは、変数が (事実上) 読み取り専用メモリ (フラッシュ、EEPROM、または ROM など) に格納される可能性があるため、これはさらに意味があります。
ジェリーに完全に同意...
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 メモリを超えてはならないことに注意してください !!!
その場合、コンパイラは通常何らかのエラーをスローします...ただし、常にではありません(スタックが完全に考慮されていない場合があります)