gpt4 book ai didi

c++ - 在特定偏移量和类型处重新解释_cast 原始结构的安全方法?

转载 作者:太空宇宙 更新时间:2023-11-04 16:31:23 24 4
gpt4 key购买 nike

return *reinterpret_cast<UInt32*>((reinterpret_cast<char*>(this) + 2));

Struct 是 pragma packed 1 并且包含一堆 uint、char、short 字段...

因为它是 UInt32,是否应该首先将它重新解释为 unsigned char* 或者它甚至重要吗?

另外,速度在这里很关键,我相信 reinterpret_cast 是最快的转换,而不是 static_cast。

编辑:该结构实际​​上由两个单字节字段组成,后跟大约 16 个其他结构的 union ,其中 15 个结构的第一个字段是 UInt32。我快速检查它是否不是没有的那个,然后对 2 字节偏移量执行 reinterpret_cast。

最佳答案

不能直接访问成员(member)吗?这是未定义的行为,在强制单词对齐的系统上根本不起作用(如果您正在这样做,这可能不是问题,但需要提及)。

reinterpret_cast 不会比 static_cast 快,因为它们只是告诉编译器如何在编译时使用内存。然而 dynamic_cast 会更慢。

没有合法的方法将您的 struct + offset 视为非 char 类型。

关于c++ - 在特定偏移量和类型处重新解释_cast 原始结构的安全方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6522865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com