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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux防火墙端口开放_防火墙开启端口linux

    linux防火墙端口开放_防火墙开启端口linux在服务器上使用某些软件时需要开启相应的防火墙端口号,简单了解下Linux防火墙端口防火墙策略防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,否则则丢弃。起到一个过滤的作用,保证了主机的安全。查看firewall服务状态systemctlstatusfirewalld开启、重启、关闭、firewalld.service服务1.开启servicefirewalldstart

    2022年9月22日
    5
  • chrome调试appweb_调试应用是什么意思

    chrome调试appweb_调试应用是什么意思googleDevice使用

    2025年7月24日
    9
  • crontab 用法(执行python文件)[通俗易懂]

    crontab 用法(执行python文件)[通俗易懂]前提:创建一个xxx.py的文件文件头为#!/usr/bin/python3#-*-conding=utf-8-*-print(‘helloworld’)更改权限chmod777xxx.py这样python文件就可以执行了ubuntu@VM-0-10-ubuntu:~/script$./test.pyhelloworldcrontab使用…

    2022年8月24日
    11
  • api接口文档html模板,开发接口文档-api文档模板

    api接口文档html模板,开发接口文档-api文档模板1、XXX项目接口文档版本控制信息版本日期描述作者V1.02018-8-13创建XXX1获取所有字段1.1获取所有字段请求地址:/session/field/findAll请求参数参数名必填字段类型描述name是String根据名称筛选响应code10000成功,-1系统错误,10001必填参数为空message响应描述result如响应例子请求例子:http:/127.0.0.1:8080/…

    2022年7月24日
    33
  • Vue父组件向子组件传值之props详解

    Vue父组件向子组件传值之props详解文章目录子组件必须通过props访问父组件数据注意:JavaScript中使用驼峰命名,HTML中使用短横线分割命名子组件中的data组件中的props子组件不能修改父组件中的数据组件实例的作用域是孤立的。这就意味着不能在子组件的模板内直接引用父组件的数据。父组件的数据需要通过props才能下送到子组件中。子组件必须通过props访问父组件数据一个组件可以直接在模板里面…

    2022年6月5日
    47
  • 编译时异常和运行时异常[通俗易懂]

    编译时异常和运行时异常[通俗易懂] 一,异常的概念Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual Mac…

    2022年6月13日
    26

发表回复

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

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