0

可能重复:
为什么这个 C 代码有效?

为什么此用于查找结构中字段偏移量的代码不给出 segfault ?

#define offset(structName,fieldName) (&((structName *)0)->fieldName)
4

1 回答 1

3

因为它没有访问任何数据。它只是计算一个地址。尝试执行以下任一操作:

foo = *offset(MyStruct, MyField);
*offset(MyStruct, MyField) = 1234;

你会看到一个漂亮的 SEGFAULT :-)

于 2012-08-06T09:26:25.757 回答