gpt4 book ai didi

C++ 匿名结构指针赋值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:52 25 4
gpt4 key购买 nike

所以,这不是做事的最佳方式。但是,为了理论,如何才能成功地将指针值分配给匿名结构的指针?

#pragma pack(push,1)
struct
{
__int16 sHd1;
__int16 sHd2;
} *oTwoShort;
#pragma pack(pop)

oTwoShort = (unsigned char*)msg; // C-Error

产生:

error C2440: '=' : cannot convert from 'unsigned char *' to '<unnamed-type-oTwoShort> *'

该示例假定 msg 本身是一个有效的指针。

这可能吗?由于您没有实际类型,您甚至可以进行类型转换吗?

最佳答案

可以通过decltype获取类型:

oTwoShort = reinterpret_cast<decltype(oTwoShort)>(msg);

这是在 C++11 中添加的,因此它不适用于旧的编译器。 Boost 有一个大致相同的实现(BOOST_PROTO_DECLTYPE),旨在与旧的编译器一起使用。它有一些限制(例如,如果需要内存,每个作用域只能使用一次)但总比没有好。

关于C++ 匿名结构指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11282306/

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