hcwanz 发表于 2023-11-4 00:05:19

关于结构体。似乎火山绕了个远路。

本帖最后由 hcwanz 于 2023-11-4 11:24 编辑

完全基于火山的结构体封装方案 - 火山平台俱乐部 - 火山软件开发平台 - Powered by Discuz! (voldp.com)
上面是我之前的帖子,里面讲了c编译器对结构体的一种处理方式:字节对齐。我也尝试了一个不成功的基于字节对齐的火山结构体,但读取比较蛋疼所以没弄完就算了。

然后是刚才一个火友发的帖子
关于视窗.结构类,没有封装取结构体指针函数吗? - 错误及建议提交 - 火山软件开发平台 - Powered by Discuz! (voldp.com)

我突然兴起去写了个@视窗.结构类,想看看源码
然后对着这份源码做了个亦对亦错的结论,“@视窗.结构类并没有建立一个S结构体的实例,难道类能直接当作结构体?”


从GetStruct和SetStruct实现的角度、火山的角度看,这个结论是错的。吴总显然是把类当作类,结构体当作结构体。



但从c++的角度看,这个结论是正确的。类就是个大号的结构体。
也就是说,甚至不用@视窗.结构类,就算是一个单纯的类,我们也可以通过取首成员地址的方式把它当作结构体,从内存里取出来。


甚至嵌套的类依然如此

tmf19901124 发表于 2023-11-4 01:14:10

成员换个顺序就拉闸

hcwanz 发表于 2023-11-4 11:09:30

本帖最后由 hcwanz 于 2023-11-4 13:38 编辑

tmf19901124 发表于 2023-11-4 01:14
成员换个顺序就拉闸这里讨论的是类和结构体的差异,成员顺位是字节对齐导致的,这一点上类和结构体一样

呵呵仙8 发表于 2023-11-4 11:13:57

:)谢谢,又学到新知识!

shuimiao 发表于 2023-11-4 12:19:13

此研究值得嘉奖

消散孤独 发表于 2023-11-4 12:25:35

众筹鸡腿送楼主

呵呵仙8 发表于 2023-11-4 14:15:34

:)再想一想,主结构体有成员为次结构体的我们只需向一个变整数变量写入次结构体的指针(它就是一个有变量地址的结构体变量).这样在类中套阿套的!不就是OK了!压根不会因为不会C++而头痛!;P

xrea 发表于 2023-11-4 17:41:11

结构类的作用是API时候用的

hcwanz 发表于 2023-11-4 17:45:12

xrea 发表于 2023-11-4 17:41
结构类的作用是API时候用的

现在结构类绕了完全没有意义的一层,实际上完全可以把结构类做成文本型那样的基本数据

沉默流星 发表于 2023-11-10 01:44:17

跟火山安卓泛型是一个类似的东西。看着使用@模板基础类和@模板实现类,其实输出的Java源码就是一个普通的class类。里面有普通的方法。火山视窗结构体估计也是采用的这种方式
页: [1]
查看完整版本: 关于结构体。似乎火山绕了个远路。