【发布时间】:2012-07-12 10:12:16
【问题描述】:
因此,当目标平台为 32 位时,我拥有可以在 Visual Studio 2005 中完美编译的现有代码。但是,它不适用于 64 位。我不明白为什么;事实上,我很久以前从未见过指针被强制转换。它甚至是正确的 C++ 吗?
#define REAL double
typedef REAL* point;
point *ptary; //(so it's basically double** ptary?)
long arylen = (long) ptary[0];
提前致谢。
【问题讨论】:
-
在语言方面是正确的,但是当人们警告投射时,正是出于这样的原因(以及其他原因),即缺乏可移植性。
-
请注意,
long在 64 位 Linux 和其他平台上是 64 位的,因此这是在将代码移植到 Windows 时常见的错误。
标签: c++ winapi pointers long-integer win64