これらを宣言する場所、使用すべきタイミング、その他の差別化機能に関して、size_t
これら 2つの違いは何ですか?std::size_t
ベストアンサー1
Csize_t
と C++ はstd::size_t
どちらも同じです。
Cでは、で定義され<stddef.h>
、C++では、で定義され、<cstddef>
その内容はCヘッダーと同じです(以下の引用を参照)。次のように定義されます。符号なし整数型の結果ののサイズオペレーター。
C規格の§17.7/2では、
size_tは符号なし整数型の結果ののサイズオペレーター
そしてC++標準cstddef
では、§18.1/3で(ヘッダーについて)こう述べています。
内容は標準Cライブラリヘッダー<stddef.h>と同じです。以下の変更を加えた。
つまり、両方とも同じです。唯一の違いは、C++では名前空間size_t
で定義されることですstd
。
また、上の行には次のようにも書かれていることにも注意してください。「以下の変更を伴って」これは を参照しているわけではありませんsize_t
。むしろ、同じヘッダーで定義されている、C++ によって言語に追加された新しい機能 (C には存在しない) を参照しています。
Wikipedia には、以下の範囲とストレージ サイズに関する非常に優れた情報が掲載されていますsize_t
。
size_t の範囲とストレージサイズ
の実際ののタイプ
size_t
はプラットフォーム依存; はよくある間違いsize_t
は と同じであると仮定することでありunsigned int
、これは例えば32ビットアーキテクチャから64ビットアーキテクチャに移行するときにプログラミングエラーを引き起こす可能性がある[3][4]。1999 ISO C 標準 (C99) によれば、
size_t
少なくとも 16 ビットの符号なし整数型です。
残りは以下からお読みくださいこのページWikipediaで。