我刚刚开始使用x64编译。
我有几个char *,我正在减去它们。 使用32位编译,这可以工作:
char * p1 = ....
char * p3 = ...
int delta = p3 - p1;
但如果我为x64编译,我会收到警告:
warning C4244: 'initializing' : conversion from '__int64' to 'int',
possible loss of data
使用哪种正确的类型来表示两个指针之间的区别,这两个指针在x86和x64编译中都有效?
我知道我可以在x64编译中使用__int64,但是我希望它也适用于x86,我不想在这里嵌入#ifdef
来实现它。
答案 0 :(得分:7)
有一种特殊的指针差异类型。
#include <cstddef>
ptrdiff_t
我无法测试这个,因为我这里没有VC ++(Linux),但ptrdiff_t
用于指针差分。海湾合作委员会确认:)。
每个平台的长度都是正确的!
[更新:C ++使用std::ptrdiff_t
,感谢sbi!]