1. ホーム
  2. c++

[解決済み] size_tとstd::size_tの違いについて

2022-04-24 18:01:33

質問

とはどのような違いがあるのでしょうか? size_tstd::size_t また、宣言される場所や使用されるタイミング、その他の差別化要素について教えてください。

どのように解決するのですか?

Cの場合 size_t とC++の std::size_t はどちらも同じです。

C言語では <stddef.h> で定義され、C++では <cstddef> その内容はC言語のヘッダーと同じです(以下の引用を参照)。その内容は次のように定義されています。 符号なし整数型 結果 sizeof 演算子を使用します。

Cスタンダードでは§17.7/2に書いてあります。

であるsize_t。 符号なし整数型 結果 sizeof 演算子

そして、C++スタンダードでは(について cstddef ヘッダ) を追加しました。

内容は標準Cライブラリのヘッダーと同じです. ただし、以下の変更点があります。 .

そうそう、どちらも同じなんですよ。 唯一の違いは、C++では size_tstd の名前空間を使用します。

また、上記の行には、次のように書かれていることにも注目してください。 "以下の変更を加えて"。 を指しているわけではありません。 size_t . むしろ、C++が言語に追加した(Cにはない)新機能を指しており、同じヘッダーで定義されています。


Wikipediaにsize_tの範囲と保存サイズについて非常に良い情報があります。

<ブロッククオート

size_tの範囲と格納サイズ

アクチュアル の型は プラットフォーム依存 ; a よくある間違い は、size_t と同じだと仮定しています。 これは プログラミングエラー[3][4]が発生します。 32ビットアーキテクチャから64ビットアーキテクチャへ などがあります。

1999年のISO C 規格(C99)では、size_tは符号なし 少なくとも16ビットの整数型です。

あとは、以下からお読みください。 このページ wikipediaより