OFFSet_offtheroad

OFFSet_offtheroad#defineoffsetof(s,m)(size_t)&reinterpret_cast<constvolatilechar&>((((s*)0)->m))该宏用于求结构体中一个成员在该结构体中的偏移量。第一个参数是结构体的名字,第二个参数是结构体成员的名字。该宏返回结构体structNames中成员memberName(m)的偏移量。偏移量…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

#define offsetof(s,m) (size_t)&reinterpret_cast<const volatile char&>((((s *)0)->m))

该宏用于求结构体中一个成员在该结构体中的偏移量。第一个参数是结构体的名字,第二个参数是结构体成员的名字。该宏返回结构体structName s中成员memberName(m)的偏移量。偏移量是size_t类型的。

offsetof returns the offset in bytes of the specified member from the beginning of its parent data structure. It is undefined for bit fields.

示例

#include <stdio.h>
#include <stddef.h>
typedef struct
{
int iVal;
int iVal2;
}Test;
typedef struct
{
char ch;
int iNum;
}Test2;
int main(void)
{
Test t = {1, 2};
Test2 t2 = {'t', 100};
printf("\naddress of t : %p\naddress of t.iVal : %p\naddress of t.iVal2: %p\n\n", &t, &(t.iVal), &(t.iVal2));
printf("offset of iVal in t: %p\n", offsetof(Test, iVal));
printf("offset of iVal2 in t: %p\n", offsetof(Test, iVal2));
printf("\naddress of t2 : %p\naddress of t2.ch : %p\naddress of t2.iNum: %p\n\n", &t, &(t2.ch), &(t2.iNum));
printf("offset of ch in t2: %p\n", offsetof(Test2, ch));
printf("offset of iNum in t2: %p\n", offsetof(Test2, iNum));
return 0;
}

 

  wps_clip_image-31628

 

  注意内存对齐。

原文

http://www.cppblog.com/lovedday/archive/2007/09/24/32801.html

http://baike.baidu.com/view/5513779.htm

转载于:https://www.cnblogs.com/mydomain/archive/2013/06/02/3114010.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172089.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c++ 函数指针

    c++ 函数指针函数指针基础:1.获取函数的地址2.声明一个函数指针3.使用函数指针来调用函数获取函数指针:函数的地址就是函数名,要将函数作为参数进行传递,必须传递函数名。声明函数指针声明指针时,必须指定指针指向的数据类型,同样,声明指向函数的指针时,必须指定指针指向的函数类型,这意味着声明应当指定函数的返回类型以及函数的参数列表。例如:doublecal(int);…

    2022年6月22日
    25
  • 频分复用带宽计算_信道复用的概念

    频分复用带宽计算_信道复用的概念网工05上半年(25)题:10个9.6KB/s的信道按时分多路复用在一条线路上传输,如果忽略控制开销,在同步TDM情况下,复用线路的带宽应该是(24);在统计TDM情况下,假定每个子信道只有30%的时间忙,复用线路的控制开销为10%,那么复用线路的带宽应该是(25)。供选择的答案(24)A.32Kb/s B.64Kb/s C.72Kb/s D.96Kb/s(2…

    2022年10月11日
    1
  • Softmax函数求导

    Softmax函数求导来源:https://blog.csdn.net/zt_1995/article/details/62227603其实整个推导,上面这个图片已经介绍得十分清楚了,但是仍有很多小步骤被省略掉了,我会补上详细的softmax求导的过程:…

    2025年6月2日
    4
  • 最常见的24个逻辑错误_数学主要错误分析原因

    最常见的24个逻辑错误_数学主要错误分析原因前言:最近使用阿里云windows2008R2云服务器搭建网站QQ互联接入(第三方登录)服务的过程中,使用了phpcmsV9提供的V9.6.3压缩包内的.htaccess文件。几经辗转,仍然没能解决过程中遇到的问题,问了一些技术大咖,有人说可能是500错误。以前知道有400报错,还真不知道有个500错误,所以上网查询之后,觉得应该小结一篇。1.造成500错误常见原因有:ASP语法出…

    2022年4月20日
    54
  • 传奇——用回忆感受幸福,用记忆寻找快乐

    传奇——用回忆感受幸福,用记忆寻找快乐

    2021年7月27日
    59
  • 深入研究Clang(三) libclang

    深入研究Clang(三) libclang

    2021年11月15日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号