我刚刚开始使用x64编译.
我有几个char*,我正在减去它们.通过32位编译,这可以工作:
char * p1 = ....
char * p3 = ...
int delta = p3 - p1;
Run Code Online (Sandbox Code Playgroud)
但如果我为x64编译,我会收到警告:
warning C4244: 'initializing' : conversion from '__int64' to 'int',
possible loss of data
Run Code Online (Sandbox Code Playgroud)
使用哪种正确的类型来表示两个指针之间的区别,这两个指针在x86和x64编译中都有效?
我知道我可以在x64编译中使用__int64,但是我希望它也适用于x86,我不想#ifdef在这里嵌入它.
有一种特殊的指针差异类型.
#include <cstddef>
ptrdiff_t
Run Code Online (Sandbox Code Playgroud)
我无法测试这个,因为我这里没有VC++(Linux),但它ptrdiff_t是针对指针差分的.GCC确认:).
每个平台都有正确的长度!
[更新:C++使用std::ptrdiff_t,感谢sbi!]
| 归档时间: |
|
| 查看次数: |
328 次 |
| 最近记录: |