stddef.hには標準ライブラリで扱う共通のマクロ、型が定義されています。
目次
マクロ定数
NULL
空(ヌル)ポインタ定数です。
locale.h、stdio.h、stdlib.h、string.h、time.h、wchar.hヘッダでも定義されています。
型
ptrdiff_t
2つのポインタを減算した結果の符号付き整数型です。
size_t
sizeof演算子の結果を表すための符号無し整数型です。
メモリ領域のオブジェクトサイズを表すのに適しており、配列の要素を参照する際に使用します。
stdio.h、stdlib.h、string.h、time.h、wchar.hヘッダでも定義されています。
wchar_t
8bit以上のワイド文字型として扱います。(Windows系は16bit、Unix系は32bitの場合が多い)
実際は、サポートされているロケールで指定されている最大の拡張文字セットのすべてのメンバーの個別コードを表すことができる整数型となっています。
stdlib.h、wchar.hヘッダでも定義されています。
マクロ関数
offsetof(type, member-designator)
size_t型の値を返す定数式に展開されます。
typeに指定した構造体の先頭から、member-designatorに指定した構造体メンバまでの、バイトオフセット値が返されます。
指定されたメンバがビットフィールドの場合、その動作は未定義(実装依存)となります。
使用例:
#include <stddef.h>
#include <stdio.h>
typedef struct{
int a;
double b;
char c;
}TD_ST;
int main(void)
{
printf("メンバaのバイトオフセット = %d\n", offsetof(TD_ST, a));
printf("メンバbのバイトオフセット = %d\n", offsetof(TD_ST, b));
printf("メンバcのバイトオフセット = %d\n", offsetof(TD_ST, c));
return 0;
}
実行結果
メンバaのバイトオフセット = 0
メンバbのバイトオフセット = 8
メンバcのバイトオフセット = 16
コメント