为什么这个用于查找结构中字段偏移量的代码不能给出段错误?
#define offset(structName,fieldName) (&((structName *)0)->fieldName)
答案 0 :(得分:3)
因为它没有访问任何数据。它只是计算一个地址。 尝试执行以下任一操作:
foo = *offset(MyStruct, MyField);
*offset(MyStruct, MyField) = 1234;
你会看到一个美丽的SEGFAULT :-)