「static」キーワードに関する私の現在の理解によると、変数が再初期化されるのを防ぎ、関数が終了したときに変数がメモリから離れることを防ぎます。
C では、通常、変数がグローバルである必要はないが、関数呼び出し間で変更されるべきではない場合にこれを使用します。(fi マイコン割り込み)
さて、STM32 の一部の C コードで、次のようになりました。
int main(void)
{
static char buffer[CONSOLEBUFFERSIZE];
...
私には、これは意味がありません。この変数は、終了文字を受信したときにコマンドを処理するために、受信コマンドをバッファするために使用されます。しかし、前に説明した「静的」の 2 つのプロパティは、メイン関数には適用されません。これは、main() が 1 回だけ呼び出され、終了しないためです。だから私の実際の質問:
これは、私が知らないホーカスポーカスを使用している可能性がありますか、それとも単に割り込みまたは他の関数からコードをコピーしたものであり、プログラマーが static キーワードを削除するのを忘れたか、わざわざ削除しなかったのでしょうか?