小编mav*_*ick的帖子

MACRO的offset理解困难

我一直在寻找很长很长的时间(最后的链接)来解释 offsetof MACRO 的实现:

#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
Run Code Online (Sandbox Code Playgroud)

特别是,取消引用 NULL 以获得结构中成员的偏移量。许多文章通过说 NULL 指针实际上从未真正取消引用来掩盖原因,但这对我来说没有意义。

以下是我尝试理解的一些链接:

  1. http://www.viva64.com/en/b/0301/
  2. http://www.embedded.com/design/prototyping-and-development/4024941/Learn-a-new-trick-with-the-offsetof--macro
  3. http://www.geeksforgeeks.org/the-offsetof-macro/
  4. C offsetof 宏是如何工作的?
  5. 取消引用 NULL 指针是否保证会导致 C/C++ 中的程序崩溃?

我正在寻找并试图理解的是对编译器如何解释 MACRO 定义的逐步分解理解,这最终将解释 NULL 指针实际上没有被取消引用。

编辑:尽管其他问题回答了我的疑问,但正如原始帖子中所指出的那样,它们对我来说没有意义。@dasblinkenlight 的回答揭示了我在回答其他问题时遇到的确切问题,即我们实际上没有取消引用指针是怎么回事。

c memory macros pointers offsetof

4
推荐指数
1
解决办法
523
查看次数

标签 统计

c ×1

macros ×1

memory ×1

offsetof ×1

pointers ×1