1. ホーム
  2. c++

[解決済み] size_t` に含めるべきヘッダーは?

2022-08-14 21:39:46

質問

によると cppreference.com size_t は、いくつかのヘッダで定義されています。

<cstddef>
<cstdio>
<cstring>
<ctime>

また、C++11以降では

<cstdlib>
<cwchar> 

まず、なぜこのようなことになるのかが不思議です。と矛盾していないでしょうか。 DRY の原則に反するのでは?

を使用するには、上記のヘッダのうちどれを含めればよいですか? size_t ? それは全く問題ないのでしょうか?

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

インポートする関数や型を最小限にしたいと仮定すると、私なら cstddef は関数を宣言しておらず、6つの型しか宣言していないからです。他のものは特定の領域 (文字列、時間、IO) に焦点を当てており、あなたにとって重要ではないかもしれません。

以下のことに注意してください。 cstddef のみを定義することを保証しています。 std::size_t を定義すること、つまり size_t を名前空間 std であるにもかかわらず はこの名前をグローバル名前空間でも提供します (事実上、プレーンな size_t ).

これに対して stddef.h (これは C で利用可能なヘッダでもあります) は、以下のように定義することを保証しています。 size_t をグローバルな名前空間で定義することを保証し も提供します。 std::size_t .