码迷,mamicode.com
首页 > 其他好文 > 详细

计算C结构体成员偏移量两种方式本质上是一样的

时间:2018-04-12 15:26:49      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:amp   结构体   c结构体   结果   printf   set   fse   \n   linux中   

#include <stdio.h>
#include <stddef.h>
typedef struct test_st {
    char a[3];
    char b[13];
    int *p;
}test_t;
#define OFFSET(type,member) ((size_t)(&(((type *)0)->member)))
int main()
{
    printf("a:offset\t:%ld \t2:%ld\n",offsetof(test_t, a),OFFSET(test_t, a));
    printf("b:offset\t:%ld \t2:%ld\n",offsetof(test_t, b),OFFSET(test_t, b));
    printf("p:offset\t:%ld \t2:%ld\n",offsetof(test_t, p),OFFSET(test_t, p));
    return 0;
}

结果:

a:offset    :0     2:0
b:offset    :3     2:3
p:offset    :16     2:16
offsetof函数在linux中实现方式与这个宏一致。

计算C结构体成员偏移量两种方式本质上是一样的

标签:amp   结构体   c结构体   结果   printf   set   fse   \n   linux中   

原文地址:https://www.cnblogs.com/fogcell/p/8807600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!