私はac libに取り組んでいます。これは組み込みシステムでも機能するのが良いでしょうが、組み込み開発にはあまり深く関わっていないので、私の質問です
ほとんどの組み込みコンパイラは、ローカルの静的変数に対処できます-その後の開発で想定するか、#ifdef に使用してグローバル変数を作成できる #define がありますか?
どうも
ローカル静的変数は C 標準の一部であるため、それらを使用する必要があります。
もちろん、すべての機能を備えていない C ライクな言語を作成することを妨げるものは何もありません。しかし、それは非標準であるため、機能が不足していることを特定する方法も非標準になります。
変数は標準の一部であるためstatic
、安全である必要があります。
サポートに関する問題は、おそらくコンパイラ (ほとんどのコンパイラは標準をうまく処理しています) では見られませんが、ランタイム環境をセットアップする必要があるコードには関係ありません。コードをロードするときは、C コードにジャンプする前に、実行可能ファイル、読み取り専用データ、読み書き可能データ、および実行可能ファイルのゼロ初期化セクションを適切にアンパックしてください。
ローカル静的変数は C 標準の一部なので、そうです。
\ペダンティック{
サブシステムごとに個別のファイル (コンパイル単位) を使用してコードが適切に編成されている場合は、ファイル スコープを持つ静的変数を使用することをお勧めします。これにより、それを使用するコードを個別の関数に分割することが容易になります。変数を使用するコードが複雑な場合は、コードをより小さな静的関数に分割できるため、読みやすく、理解しやすく、デバッグしやすくなります。
}
はい。ローカル スタティックは、コンパイラがソース コードを調べ終わったら、実際にはグローバルと大差ありません。グローバルが問題になるエキゾチックなプロセッサを思いつくことはできますが、多くのプロセッサに遭遇することはないと思います。
組み込みプロセッサのグローバルについて本当に興味深いのは、コンパイラに ROM や EEPROM などにグローバルを割り当てるオプションがしばしばあることです。