简介
定义各种变量和宏的头文件
定义变量
<stddef.h>定义了三个数据类型,size_t
,wchar_t
和ptrdiff_t
。
size_t
是sizeof
的结果,一般是long unsigned int。
例如
#include <stdio.h>
#include <stddef.h>
typedef struct TEST{
int a,b;
}test;
int main(){
test x;
static size_t off = (char*)&x->b - (char*)&x;
}
//得到字段b到test初始值的偏离
wchar_t
用于描述宽字符,一般是int。ptrdiff_t
是指针相减的结果,一般是有符号整数。
例如
#include <stdio.h>
#include <stddef.h>
int main(){
char x[20];
ptrdiff_t nx = &x[5]-&x[0];
printf("%d\n", nx); //5
long int y[20];
ptrdiff_t ny = &y[5]-&y[1];
printf("%d\n", ny); //4
return(0);
}
//得到结构中某个字段距离结构体初始指针的距离
定义宏
NULL
是一个空指针常量的值。- 宏函数
offsetof(type, member-designator)
用于确定结构的某个成员到起始位置的偏移字节,生成一个类型为size_t
的整型变量,及结构成员相对于结构开头的字节偏移量。成员由member-designator
给定,结构名称由type
给定。
例如,size_t
的实例可改写为
static size_t off = offsetof(test, b)