我转换的多个C++应用的大的项目从32位MFC到64位。在可预见的未来,这些应用程序将被要求编译为32位和64位。INT_PTR在64位转换
我经历了这些类型的INT_PTR和UINT_PTR运行。我有两个问题。
是否将这些类型用作常规整数目的的“默认”类型(例如循环计数器等)被认为是最佳做法?
我知道这些类型的大小与您正在编译的环境的指针大小有关,但将它们用于通用整数似乎令人困惑。例如(INT_PTR i = 0; i < 10; i ++)...;我不是一个相关的指针或指针,所以这个类型的名字让我感到困惑。有没有更好的预定在这种情况下使用,或者我应该自己做?
我的编译器是VS2010。
由于
大多数事物的基本类型有什么问题?在32位和64位环境中唯一需要担心的是在读取/写入二进制文件和处理某些值时的差异。如果您需要特定大小的字段,请使用适当的(int32_t,uint64_t等)或为两种环境定义您自己的字段。 –
我最关心的是速度。有一些时间关键功能需要尽可能高效。我的理解是,在64位环境中最好使用64位整数来实现通用目的。我们还经常从内置函数中获得64位值。例如:MyFunc(strlen(my_string));在64位中,我的选项要么将strlen的结果强制转换为32位值,要么将MyFunc更改为size_t或UINT_PTR作为参数。 – user3015426
如果您担心速度问题,是否有**应用程序的配置文件?如果你没有,不要担心。对客户而言重要的质量是“*足够快”*。客户通常不关心*“尽快”*。如果您确实需要加速应用程序,请考虑将密集计算卸载到任何矢量单元(例如SSE/AVX,GPU)。 – IInspectable