sizeof
演算子を使用していて、コードでsize_t
を使用している場合、stddef.h
を必ず含める必要がありますか?私はstddef.h
を含めていません。コードはMVS2008とBorland C++ BuilderXの両方で警告なしにコンパイルされます。
どうもありがとう...
sizeof()
は、関数呼び出しのように見えますが、実際には演算子であり、言語コアの一部です。インクルードは必要ありません。
size_t
はさまざまなヘッダーで定義されています:stddef.h
、string.h
、stdlib.h
、stdio.h
。それらのいずれかを含めると、size_t
をコードに追加します。
いいえ、stddef.hを含むヘッダーを含めることができます
Size_t定義は、stdlib.hヘッダーファイルをインクルードすることにより、参照するコードに提供されます。実際、ほとんどの実装ではこのファイルで文字どおり定義されていません代わりにsubたとえば、GNU Cコンパイラの標準ライブラリが行うように、ファイルstddef.h)を含めます。アプリケーションコードにstddef.hを直接インクルードすることは完全に有効であり、したがって、このファイルの他のメンバーが必要ない、または望まれない場合にstdlib.hを置き換えることができます。
Cでは、size_t
の定義は、いくつかのヘッダーの1つに由来します:stddef.h
、stdio.h
、stdlib.h
、string.h
、time.h
またはwchar.h
。
コンパイラーの実装がこれを調整できる方法はいくつもありますが、ca n'tを使用する1つの方法は、コンパイラーにこれらのヘッダーの1つを組み込ませることです-それはCコンパイラが実行することを許可されているものではありません(この制限はC++で解除され、独自の目的で標準ヘッダーを含めることが許可されています)。