• c语言复习-----结构体的地址计算(宏)


    linux下开发经常会碰到这2个宏,总结下:

    1 #define offsetof(TYPE, MEMBER) ((size_t) & ((TYPE *)0)->MEMBER )

    宏功能:获得一个结构体变量成员在此结构体中的偏移量

    1. ( (TYPE *)0 ) 将零转型为TYPE类型指针;
    2. ((TYPE *)0)->MEMBER 访问结构中的数据成员;

    3. &( ( (TYPE *)0 )->MEMBER )取出数据成员的地址,即相对于0的偏移量,要的就这个;

    4.(size_t)(&(((TYPE*)0)->MEMBER))结果转换类型,size_t应该最终为unsigned int类型。

    #define container_of(ptr, type, member) ({ 
    const typeof( ((type *)0)->member ) *__mptr = (ptr);
    (type *)( (char *)__mptr - offsetof(type,member) );})

    宏功能:从结构体(type)某成员变量(member)指针(ptr)来求出该结构体(type)的首指针。

  • 相关阅读:
    2020.12.17
    2020.12.16
    2020.12.15
    2020.12.13
    JavaScript变量:
    第二十七章 ansible变量介绍
    今日收获
    今日收获
    今日收获
    今日收获
  • 原文地址:https://www.cnblogs.com/live-in-city/p/3431699.html
Copyright © 2020-2023  润新知