是否取消引用空指针的偏移量

时间:2016-08-31 22:36:08

标签: c++ c c++11

在查看我的编译器(VS2015)如何实现offsetof宏时,我看到以下实现:

#define offsetof(s,m) ((size_t)&reinterpret_cast<char const volatile&>((((s*)0)->m)))

在我看来,这是在((s*)0)->m取消引用空指针。我理解这是未定义的行为。编译器指定的这种未定义的行为是否比语言更强烈,或者是否存在一些我从未理解的“永不取消引用空指针”规则的细微差别?

0 个答案:

没有答案