碰到难懂的宏定义,可以先进行预编译:
gcc -E verify.c
获取一个变量的offset
crc = fio_crc32c(p, ((size_t) &((struct verify_header *)0)->crc32));
解析:
将一个0地址做类型转换,然后去取某个元素的地址。因为起始地址是0,所以该元素的地址就是此变量的offset。
转载于:https://blog.51cto.com/xmwang/1610123
碰到难懂的宏定义,可以先进行预编译:
gcc -E verify.c
获取一个变量的offset
crc = fio_crc32c(p, ((size_t) &((struct verify_header *)0)->crc32));
解析:
将一个0地址做类型转换,然后去取某个元素的地址。因为起始地址是0,所以该元素的地址就是此变量的offset。
转载于:https://blog.51cto.com/xmwang/1610123