繁体   English   中英

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

[英]C++: 32 bit to 64 bit migration

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

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

现在,我知道sizeof(long)将在32位返回4 ,在64位返回8 因此,我对于通常应该替换上面两行的内容感到困惑,以至于这些行在32位和64位模式下均能正常工作。

这听起来像是一个琐碎的问题,但是我无法在我正在从事的项目中大量解决的这类问题上取得任何进展。

我对于一般替换上面两行应该使它们在32位和64位模式下正常工作感到困惑。

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

如果要使用具有特定大小的整数(即在所有平台上为32位或在所有平台上为64位),请使用<cstdint>定义: int32_t为32位, int64_t为64位。 无论平台如何,这将确保准确的大小。

如果您需要的只是您自己程序中的互操作性,则可以将所有内容保持不变:如果平台上没有最短long的溢出,则程序将在更长long的平台上做同样的事情,除了它会占用不必要的内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM