[英]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.