30

sizeof演算子を使用size_tしてコードで使用している場合、必ず を含める必要がありますかstddef.h? を含めていませんがstddef.h、コードは MVS2008 と Borland C++ BuilderX の両方で警告なしにコンパイルされます。

どうもありがとう...

4

3 に答える 3

34

sizeof()は、関数呼び出しのように見えますが、実際には演算子であり、言語コアの一部です。含める必要はありません。

size_tstddef.hstring.hstdlib.h、およびのさまざまなヘッダーで定義されていstdio.hます。コードで使用するには、それらのいずれかを含めるだけで十分size_tです。

于 2010-04-09T05:20:16.583 に答える
11

いいえ、stddef.h を含むヘッダーを含めることができます

size_t の定義は、stdlib.hヘッダー ファイルをインクルードすることにより、コードの参照部分に提供されます。実際、ほとんどの実装では、このファイルで文字通り定義されていませんが、代わり に、たとえば GNU C コンパイラの標準ライブラリが行うように、ファイルstddef.hをサブインクルードします。アプリケーション コードに stddef.h を直接含めることは完全に有効であるため、このファイルの他のメンバーが不要または望まれない場合は、stdlib.h を置き換えることができます。

ソース

于 2010-04-09T05:20:55.463 に答える
3

c では、 の定義は、 、、、、またはのいずれsize_tかのヘッダーに由来します。stddef.hstdio.hstdlib.hstring.htime.hwchar.h

コンパイラの実装がこれを調整できる方法はいくつもありますが、使用できない方法の 1 つは、コンパイラにこれらのヘッダーの 1 つを背後に含めることであることに注意してください。これは、C コンパイラが許可されているものではありません。する必要があります (この制限は、独自の目的で標準ヘッダーを含めることが許可されている C++ では解除されました)。

于 2010-04-09T05:37:06.377 に答える