C ++:32位到64位的迁移

时间:2014-05-02 13:13:15

标签: c++ macos 64-bit

我正在开发一个迁移32位C++代码的项目,以便在Mac OS X上同时使用32位和64位模式。我在某些事情上感到困惑。例如,请考虑以下代码行 -

long* buffer = new long[VAL];
long var = buffer[0];

现在,我知道sizeof(long)将返回32位的4和64位的8。所以,我很困惑一般应该替换上面两行,以便这些行在32位和64位模式下都能正常工作。

这可能听起来像是一个微不足道的问题,但我无法在我正在进行的项目中充实的这类问题上取得任何进展。

1 个答案:

答案 0 :(得分:2)

  

我很困惑一般应该替换上面两行,以便这些行在32位和64位模式下都能正常工作。

答案取决于“正确工作”的含义。

如果您希望使用特定大小的整数(即所有平台上的32位或所有平台上的64位),请使用<cstdint>int32_t中的定义32位,int64_t为64位。无论平台如何,这都将确保精确的尺寸。

如果您需要的只是您自己程序中的互操作性,您可以将所有内容保留原样:在最短long平台上没有溢出的情况下,程序将在平台上执行相同的操作使用更长的long,除了需要更多的内存。