碰到难懂的宏定义,可以先进行预编译:

    gcc -E verify.c 

获取一个变量的offset

    crc = fio_crc32c(p, ((size_t) &((struct verify_header *)0)->crc32));

    解析:

    将一个0地址做类型转换,然后去取某个元素的地址。因为起始地址是0,所以该元素的地址就是此变量的offset。