* acl4_002: 分割コンパイルはあまり使わない・命名規則 -(by [[K]], 2025.11.28) ** (1) -「30日でできる!OS自作入門」を読んだことのある人は知っていると思いますが、私はかつては分割コンパイルが大好きで、makeを使っていました。 -しかし、最近はPCの性能がどんどん高くなって、分割コンパイルしなくても十分な速度でビルドできるようになりました。また、分割コンパイルしなければ、コンパイラは関数のインライン展開などでより広域な最適化をする余地が生まれて、結果的に生成されるコードの質も高まりました。こうして私は「よほど大きなプログラムでない限り、分割コンパイルしない人」になったのでした。 -分割コンパイルしない場合、ライブラリはヘッダと本体に分けたりはしません。全部「~.c」に書くことになります。 -また関数やグローバル変数の宣言時にはstaticを必ずつけます。こうすることで、この関数や変数が他からリンクされる可能性はなくて、不要であれば消しても問題ないとコンパイラに教えてやるのです。これをやらないといつも長大な実行ファイルが生成されてしまいます。 -しかしstaticを強制すると分割コンパイルしたくなった時に不便かもしれないので、以下のようなAstaticマクロを作りこれを使っています。これで、Astaticの宣言を変えてヘッダファイルを書けば、分割コンパイルに対応した普通のライブラリにもできます。 #define Astatic static ** (2) -ライブラリを作るとき、関数名や構造体名をどうするかというのがあります。自由に名前を付けていると、アプリ側の関数名などと衝突が起きる可能性があります。それで、acl4では関数名・構造体名・マクロ名のすべてを「A」から始めることにしています。アプリ側はこれを避ければ将来的にも名前が衝突する心配がありません。