Previous: Object Internals, Up: GNU Emacs Internals [Contents][Index]
以下はEmacsのCソースコード内で整数タイプを使用する際のガイドラインです。これらのガイドラインはときに相反するアドバイスを与えることがありますが一般的な常識に沿ったものがアドバイスです。
sの長さをintの範囲に収めることが要求されるのでなければint len =
strlen (s);を使用しないこと。
ptrdiff_tのかわりにsize_t、intptr_tのかわりにuintptr_t)にたいして同様のアドバイスを適用できる。
ptrdiff_tを優先すること。これは符号付きタイプにたいするEmacsの一般的な優先事項である。ptrdiff_tの使用によりオブジェクトはPTRDIFF_MAXに制限されるが、より大きいオブジェクトはポインター減算を破壊するかもしれず結局のところ問題を起こす可能性があるので、これは一方的に制限を課すものではない。
intptr_tを優先すること。現在のことこEmacsはintptr_tを使用したほうがよいときに別のタイプを使用する場合がある。現在のEmacsのカレント移植先にたいして未修正でコードが動作するので修正の優先度は低い。
EMACS_INTにもとづくのでEmacsで定義されたタイプEMACS_INTを優先すること。
off_tやtime_t等の)システムタイプを優先すること。安全だと解っていなければシステムタイプが符号付きだと仮定してはならない。たとえばoff_tは常に符号付きだがtime_tは符号付きである必要はない。
printf族の関数を使用してプリントされ得る任意の符号付き整数かもしれない値を表す場合にはEmacsの定義タイプprintmax_tを優先すること。
intmax_tを優先すること。
bool、false、trueを使用すること。boolの使用によりプログラムの可読性が増し、intを使用するより若干高速になる。int、0、1を使用しても大丈夫だが、この旧スタイルは段階的に廃止される。boolを使用する際には、ソースファイルlib/stdbool.in.hに文書化されているboolの代替実装の制限を尊重すれば、C99以前のプラットフォームにたいするEmacsの可搬性か保たれる。特にブーリーンのビットフィールドはboolではなく、bool_bfタイプであること。そうすれば標準のGCCでObjective
Cをコンパイルするときでさえ、正しく機能する。
intは可搬性に劣るので、intよりunsigned intかsigned
intを優先すること。単一ビットのビットフィールドの値は0か1なのでunsigned
intかbool_bfを使用すること。