在C ++中将旧代码移植到64位

时间:2013-03-31 14:57:13

标签: c++ 32bit-64bit

我正在尝试将传统的32位代码移植到64位。我们有一个像这样的联盟:

union ptType
{
    int * iPtr;
    short * sPtr;
    long * lPtr;
    bool * bPtr;
    double * dPtr;
};

您可以猜到,此联合用于存储所有这些类型的地址。我已经阅读了很多指针大小和64位算术变化。但我不太确定这种行为。这段代码似乎在QA中起作用,但我对生产更加担心,因为那里的流量很大。

如何移植到64位会影响代码的行为?

1 个答案:

答案 0 :(得分:3)

你说得对,在大多数32到64位转换下,这些指针的大小都会加倍。这个联合本身的操作不太可能是一个问题,但你必须通过类型转换,硬编码大小等来寻找与其他代码交互的地方。