64 位转换中的 INT_PTR

use*_*426 5 c++ mfc visual-studio-2010 32bit-64bit

我正在将多个 C++ 应用程序的大型项目从 32 位 MFC 转换为 64 位。在可预见的将来,这些应用程序将需要以 32 位和 64 位进行编译。

我遇到过这些类型 INT_PTR 和 UINT_PTR。我有两个问题。

  1. 将这些类型用作一般整数用途(例如循环计数器等)的“默认”类型是否被认为是最佳实践?

  2. 我知道这些类型的大小与您正在编译的环境的指针大小有关,但将它们用于通用整数似乎令人困惑。例如对于 (INT_PTR i = 0; i<10; i++) ... ; i 不是指针或与指针相关的指针,因此类型的名称让我感到困惑。在这种情况下是否有更好的预定义可以使用,或者我应该自己制作?

我的编译器是VS2010。

谢谢

nul*_*ptr 0

如果您的循环与指针无关(即,它不用作数组或向量或类似内容的索引),请int在需要通用整数类型时使用。确保您的代码不依赖于大小是一件好事int(尽管 MS VSint两个平台都是 32 位)。

使用size_t,vector<...>::size_type或其他适合索引相关循环的类型。