成瀬です。

[ruby-dev:34024] をまとめ直して新しいスレッドにしてみます。

能書きとしては、それなりにレガシーを考慮しなければならない Ruby において、
どの程度までは考慮し、どこからは切り捨てていいのかについて、
まとまった文書がないので新たにパッチを送ろうと思った人が分かりづらいだろう・・・、
というかわたしがわからないので教えてください、というものです。

* ANSI C プロトタイプを用いる
* char は 8bit かつ CHAR_BIT は 8
* char の signed 前提は不可
* short は 16bit 以上の 2 の累乗 (16bit 前提不可)
* int は 32bit 以上の 2 の累乗 (32bit 前提不可)
* long は 32bit 以上の 2 の累乗 (32bit 前提不可)
* pointer は 32bit 以上の 2 の累乗 (32bit 前提不可)
* int == long 前提不可 (LP64等 (多くの UNIX 系))
* long == pointer 前提不可 (LLP64等 (Win64))
* long long の存在前提不可
* 存在するならば long long は 64bit 以上の 2 の累乗 (64bit 前提不可)
* long long か __int64 が存在する場合は LONG_LONG が定義される
* uint32_t は存在するが、それ以外は存在しない
* C99 前提不可
* リトルエンディアン前提不可 (WORDS_BIGENDIAN で判定可能)

* int は整数全般に用いる
* long はポインタと演算を行う整数で用いる
* Fixnum は long のビット幅-1

-- 
NARUSE, Yui  <naruse / airemix.com>
DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA