offset宏定义_vba left函数

offset宏定义_vba left函数最近做某项目撸代码时用到了offsetof宏,第一次使用这个宏,项目结束后对其用法也略知一二,现分享如下。位于stddef.h中的offsetof()宏,是获得struct中某成员相对于struct首地址的偏移量,以byte为单位,用struct首地址加该偏移量获得该成员的实际地址时,要把struct首地址强制转换成以byte为计数单位,地址本身一般都是32位(与芯片架构有关),强制转换的计数单位…

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

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

最近做某项目撸代码时用到了offsetof宏,第一次使用这个宏,项目结束后对其用法也略知一二,现分享如下。

位于stddef.h中的offsetof()宏,是获得struct中某成员相对于struct首地址的偏移量,以byte为单位,用struct首地址加该偏移量获得该成员的实际地址时,要把struct首地址强制转换成以byte为计数单位,地址本身一般都是32位(与芯片架构有关),强制转换的计数单位不会影响地址本身,该计数单位是告诉程序,对地址做运算时,偏移量是以该计数单位为单位的。比如,此处偏移量是以byte为单位的,故将struct首地址强制转换成以byte为计数单位,若将struct首地址强制转换成以2byte为计数单位,则该首地址与偏移量做运算时,将一个偏移量认为是2byte长度,这就导致计算出的成员实际地址有误,甚至超出分配给变量的地址的范围,导致Data Abort Exception,当然,这只是导致Data AbortException的一类原因。

*(u16 *)((u16 *)((u8 *)&ScrPara+s32)+c8)=i8;

用一个成员的实际地址去计算另一成员的实际地址时也要注意对第一个成员实际地址的计数单位的强制转换,此处是根据成员的size来决定的,若所有成员的size都是byte,则强制转换为byte,若size都是2byte,则强制转换为2byte,以此类推。若各种size都有,则强制转换为byte,避免引起混乱。

*(u16 *)((u16 *)((u8*)&ScrPara+s32)+c8)=i8;

以上各种地址,操作其内放的值时也要对地址进行一次计强制转换,该强制转换是与其内放的值的size相同。注意此处我没用“计数单位”这四个字,因为此处的强制转换不再是计数单位,而是其内放的值的size。若此时强制转换为byte,而值的size大于1个byte,则首先访问低位的byte。

*(u16 *)((u16 *)((u8*)&ScrPara+s32)+c8)=i16;

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

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

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


相关推荐

  • linux一键安装

    linux一键安装

    2021年9月23日
    45
  • mysql中exists的用法详解[通俗易懂]

    mysql中exists的用法详解[通俗易懂]前言在日常开发中,用mysql进行查询的时候,有一个比较少见的关键词exists,我们今天来学习了解一下这个exists这个sql关键词的用法,这样在工作中遇到一些特定的业务场景就可以有更加多样化的解决方案语法解释语法SELECTcolumn1FROMt1WHERE[conditions]andEXISTS(SELECT*FROMt2);说明括号中的子查询并不会返回具体的查询到的数据,只是会返回true或者false,如果外层sql的字段在子查询中存在则返回true,

    2025年8月12日
    2
  • 网线之RJ45接口定义及网线线序[通俗易懂]

    网线之RJ45接口定义及网线线序[通俗易懂]RJ45接口定义常见的RJ45接口有两类:用于以太网网卡、路由器以太网接口等的DTE类型,还有用于交换机等的DCE类型。DTE我们可以称做“数据终端设备”,DCE我们可以称做“数据通信设备”。从某种意义来说,DTE设备称为“主动通信设备”,DCE设备称为“被动通信设备”。当两个类型一样的设备使用RJ45接口连接通信时,必须使用交叉线连接。这个可以从如下的RJ45DTE类型引脚定义

    2022年9月17日
    3
  • OHEM 代码详解「建议收藏」

    OHEM 代码详解「建议收藏」目录1.网络结构2.OHEM前向传播3.reference1.网络结构############################ReadonlyRoINetwork###########Start##########layer{name:”roi_pool5_readonly”type:”ROIPooling”bottom:”co…

    2022年5月30日
    33
  • java hashcode作用_哈希函数的作用是什么

    java hashcode作用_哈希函数的作用是什么以下是关于HashCode的官方文档定义:hashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable提供的哈希表。hashCode的常规协定是:在Java应用程序执行期间,在同一对象上多次调用hashCode方法时,必须一致地返回相同的整数,前提是对象上equals比较中所用的信息没有被修改。从某一应用

    2022年9月8日
    3
  • android系统中toast是什么_Android个人资料简单布局

    android系统中toast是什么_Android个人资料简单布局老规矩,先上效果图吧主要实现了几种常用的方式:1.最基本的Toast系统自带Toast采用的是队列的方式,等当前Toast消失后,下一个Toast才能显示出来;原因是Toast的管理是在队列中,点击一次,就会产生一个新的Toast,要等这个队列中的Toast处理完,这个显示Toast的任务才算结束。 so~我们可以把Toast改成单例模式,没有Toast再新建它,这样也就…

    2022年9月13日
    3

发表回复

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

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