まあ、size_t
,uintptr_t
,intptr_t
およびptrdiff_t
のCプログラミング言語で定義されたタイプは本当に私を困惑させる。セグメンテーションされたアドレッシングモードを使用する16ビットシステムで、 `size_t`、` uintptr_t`、 `intptr_t`、` ptrdiff_t`型の実際のサイズはどれくらいですか?
Iはフラットメモリモードを用い32ビットシステムでは、4種類の上記の実際の大きさであることに気づいた:
sizeof(size_t) = sizeof(uintptr_t) = sizeof(intptr_t) = sizeof(ptrdiff_t) = 4
そしてフラットメモリモードを使用64ビットシステム上私はまだ好奇心だ、
sizeof(size_t) = sizeof(uintptr_t) = sizeof(intptr_t) = sizeof(ptrdiff_t) = 8
しかし:、上記4種類の本当の大きさがあります16ビットシステム上のこれらの4つのタイプの実際のサイズを使用してシステム。
Windows 3.1xによれば、Windows 3.1xは一連の16ビットオペレーティングシステムです。しかし、私は実際の答えをテストして検証するのに適したC言語コンパイラを見つけることができません。
あなたは、オペレーティングシステムの博物館でそのジョブをとっているべきではありません。) – BitTickler
」しかし、本当の答えをテストして検証するのに適したC言語コンパイラを見つけることはできません。 - 私は、Windows 3.1がこれらの標準的な擬似型よりも先行していることがわかります。 –
Windows 3.1およびdos 3.x ... 6.x日に、x86..286のメモリモデルが明示的にモデル化されました。コンパイラはそれを認識していました。 Borland C++(2.x ... 3.x)とMSVCの両方に、似たようなメモリモデルクラスがありました。プログラムのコンパイル(大、小、巨大、コンパイル)のために一般的に選択します。あるいは、#pragma orgiesに細かい制御をすることができます。 – BitTickler