次: ANSI C, 前: Compatibility, 上: Design Advice
すでに存在する、たくさんのGNUの機能は、相当するUnixの機能以上の便利な 拡張を数多くサポートしている。あなたのプログラムを実装する中でそれらの 拡張を使用するかどうかは難しい問題だ。
一方、その拡張を使用することで、より美しいプログラムを作ることができる。 他方、他のGNUツールが手に入らなかったら、人々はそのプログラムを構築で きないだろう。このために、そのプログラムはより少ないマシンでしか動かな くなるだろう。
いくつかの拡張によって、代わりのものも提供するのが容易であるかもしれな
い。例えば、“キーワード” INLINE
を定義し、コンパイラによって、
inline
か中身のないマクロに展開させることができる。
一般的に言って、おそらく、拡張を使わずに平易に書けるならそれらを使わな いのが最善で、大きく改善されるなら拡張を使うのが最善だ。
この規則の例外は、非常にたくさんのシステムで走る、(Emacsのような)大き くて完成されているプログラムだ。そのようなプログラムでは、GNUの拡張の 使用によって、上手く行かなくなってしまうだろう。
別の例外は、コンパイル過程の一部として使われるプログラムだ。GNUコンパ イル環境の機能を立ち上げるために、他のコンパイラによってコンパイルされ なければならないものはどんなものでも。もしこれらがGNUコンパイラを必要 としていると、すでにインストール済みでない限り、それらをコンパイルする ことは誰にもできない。これは良くないだろう。