私は最近、フラッシュ メモリが 2kB しかないマイクロコントローラ用の組み込みソフトウェアを C 言語で開発しています。プログラミングの終わりに近づいて、コードの制限に達しています。これまでは、この問題が発生した場合にコンパイラの最適化のレベルを上げて、再テストを行ってから、楽しく続けてきました。しかし、最近最適化の限界に達し、最後の機能を追加したところ、再びメモリ不足になりました。その結果、George Foreman にソース コードを公開して、無駄を省かなければなりませんでした。
私はあちこちでいくつかの抽象化の層を減らすことにいじりました。これは問題をわずかに改善しましたが、十分ではありませんでした。次に見たのは、関数プロトタイプを持っていることでした
void process_event(Event event, void *data);
これは、処理するイベントと、呼び出しに追加データを渡すために使用できるvoid ポインターをパラメーターとして取ります。余分なデータが必要ない場合は、合格しNULL
ました。この関数は、開発の非常に早い段階で作成されたもので、 を使用したことがないことに気付いたdata
ので、除外しました。この 1 つの変更により、必要なコンパイル済みコードのサイズを節約できました (~100バイトNULL
) process_event
。