我只是从x64编译开始。
对于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编译中使用\uu int64,但我希望它也适用于x86,并且我不希望嵌入 #ifdef 我来做。
#ifdef
有一种特殊的指针差分类型。
#include <cstddef> ptrdiff_t
我不能测试这个,因为我这里没有VC++(Linux),但是 ptrdiff_t 用于指针差异。GCC确认:)。
ptrdiff_t
[更新:C++使用] std::ptrdiff_t ,感谢sbi!]
std::ptrdiff_t