我正在尝试将传统的32位代码移植到64位。我们有一个像这样的联盟:
union ptType
{
int * iPtr;
short * sPtr;
long * lPtr;
bool * bPtr;
double * dPtr;
};
您可以猜到,此联合用于存储所有这些类型的地址。我已经阅读了很多指针大小和64位算术变化。但我不太确定这种行为。这段代码似乎在QA中起作用,但我对生产更加担心,因为那里的流量很大。
如何移植到64位会影响代码的行为?
答案 0 :(得分:3)
你说得对,在大多数32到64位转换下,这些指针的大小都会加倍。这个联合本身的操作不太可能是一个问题,但你必须通过类型转换,硬编码大小等来寻找与其他代码交互的地方。