#define offsetof(s,m) ((::size_t)&reinterpret_cast<char const volatile&>((((s*)0)->m)))
Run Code Online (Sandbox Code Playgroud)
我已经找了这个代码几分钟了,但我仍然不明白 const char 易失性引用是什么,这让我很头疼。
#define offsetof(s,m) ((size_t)&(((s*)0)->m))
Run Code Online (Sandbox Code Playgroud)
这个非常清楚,确实有意义并且运行良好,为什么 MSVC 编译器使用另一个。