2つのオブジェクトのサイズの差を表すために使用するCの型はどれですか? size_t
として2つのsize_tを減算するタイプは?
は
size_t diff = sizeof (small_struct) - sizeof (big_struct);
のようなものは明らかに正しいことではないでしょうし、本当の署名と同等はありません私には思える、符号なしです。その名前は、それがポインタを差し引くためだと言うように
ptrdiff_t
は一種の魅力的に聞こえるが、
- 。
- 私はこれを読んでいます。 DOSのようなセグメント化されたプラットフォームは、16ビットで表現できる最大オブジェクトサイズが64kです。しかし、farポインタは、16ビットのセグメント値と16ビットのオフセット値で構成されています。そのようなプラットフォームでも
ptrdiff_t
を32ビットにしてもらえませんか? もしそうなら、2つのオブジェクトのサイズの差は16ビットしか必要としませんでしたが、ptrdiff_tを使用すると32ビット幅の変数が得られ、最適ではありませんでした。
このような値で作業するには、適切なポータブルタイプがありますか?
Edit:
私はssize_tの知っているが、それは実際には、このような使用のために、しかし、サイズや(負)のエラー値のいずれかを返すためのものではない標準のC.
- ではありません。
を 'ssize_t'は' size_t' –
@AFAIK 'ssize_t'はPOSIXではなく、ISO C. –
@RomanRで署名されています。 'ssize_t'はC標準ではなく、' size_t'の値はPOSIXの 'ssize_t'に適合するものではありません。 – ouah