在c++中将遗留代码移植到64位

Porting Legacy code to 64 Bit in C++

本文关键字:64位 代码 c++      更新时间:2023-10-16

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

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

可以猜到,这个联合用于存储所有这些类型的地址。我读过很多关于指针大小和算术改变在64位。但我不太确定这种行为。这段代码似乎适用于QA,但我更担心的是生产,因为它会带来巨大的流量。

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

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