设为首页 加入收藏

TOP

已知结点地址,如何访问父结构?
2019-07-25 14:17:39 】 浏览:144
Tags:已知 结点 地址 如何 访问 结构

先来看这样一段代码:

typedef struct _tTask
{
  tNode delayNode;
  uint32_t prio;
  uint32_t state;
}tTask;
tTask task1;

假设知道了task1.delayNode的地址,怎么反推task1的地址?

如果delayNode定义在task1开头,显然它们俩地址是一样的,这只是一种特殊的情况,如果delayNode放在中间呢?

#define tNodeParent(node, parent, name)   \
(parent *)((uint32_t)&((parent *)0)->name)

所以就可以写成

tNodeParent(node, tTask, delayNode)

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇数组与指针、变量、字符数组、结.. 下一篇C语言的变参列表 va_list

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目