火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 3382|回复: 16
打印 上一主题 下一主题

[视窗] ★ 重要知识点记录,关于结构体。

[复制链接]

307

主题

1382

帖子

5315

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5315
QQ
跳转到指定楼层
楼主
发表于 2022-7-13 19:37:38 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
有些人吐槽结构体的一些问题。连memcpy都不行。
那是错误的。是不对的。
在实际运用当中,我发现结构体是不能直接运用结构体指针的。
因为结构体指针!=结构体起始成员内存地址指针。
意思是,结构体指针+24(好像是)才=第一个成员的指针。
那我们在实际运用中,可以在嵌入代码中,
先声明目的 类型变量 例如:@ RECT _rect;

在调用 @ bool _bool =(bool)GetWindowRect((HWND)@<句柄>,&_rect);//这是一句非常正常的嵌入代码。
下一步就是将_rect里面的矩形参数成员拷贝出来。

如果直接调用 @ memcpy(&@<矩形>,&_rect,sizeof(_rect));// 这样肯定是不对的。因为  矩形这个结构没有被正确引用。
正确的引用方法应该是@ memcpy(&@<矩形.左边>,&_rect,sizeof(_rect));// 这样才会正确的把嵌入的结构体输入复制到火山结构里。

完毕。


专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

307

主题

1382

帖子

5315

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5315
QQ
沙发
 楼主| 发表于 2022-7-14 10:04:55 | 显示全部楼层
Xelloss0618 发表于 2022-7-14 08:46
纠正一下,你取的是火山类成员变量的地址,并不是结构体的。
+24是32位火山基本类的头大小,64位又是另一个 ...

对啊对啊,@创世魂 抽空把那些内部函数搞个笔记就好了, SetStruct 和 GetStruct 我还头一回见。
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

307

主题

1382

帖子

5315

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5315
QQ
板凳
 楼主| 发表于 2022-7-14 21:36:10 | 显示全部楼层
tmf19901124 发表于 2022-7-14 19:31
嵌入c++结构体+火山的属性读写,缺点就是封装慢,优点是使用舒服,彻底解决内存对齐,各种嵌套,各种数组 ...

哦哦哦,我草,对啊,嵌套的用memcpy没有啊,没法对齐啊、
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-5-7 23:43 , Processed in 0.083633 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表