Windows桌面应用程序(1-3-2-3rd) 避免多态性

新数据类型包括两种多态类型,INT_PTRLONG_PTR。在32位Windows上,INT_PTR映射到intLONG_PTR映射到long。在64位Windows上,两种类型都映射到__int64内在类型。 MIDL编译器支持这些类型用于远程过程调用,但是在分布式环境中使用它们时必须牢记一个固有的限制。请务必相应地评论您的代码。

无论平台大小如何,这些多态类型的线缆大小始终为32位。在64位Windows上解组时,运行时库符号扩展了有符号值,并为无符号值的高位字节赋值为零。在线上放置64位值时,运行时会截断高位字节。因此,只有低阶32位值可用。

仅在需要移植时使用多态类型。对于新接口,请使用MIDL内部整数类型__int32__int64,或使用指针类型或上下文句柄,以最适合传输的数据类型为准。

64位编译器支持新的多态内在__int3264。同样,这种类型的开发是为了支持移植工作,在这种情况下,透明地支持UINT_PTR类型。 (另一个内在函数__long3264将支持ULONG_PTR类型。)不要直接使用__int3264;当您需要多态类型以便移植时,请使用INT_PTR类型。


原文链接:Avoiding Polymorphism

猜你喜欢

转载自blog.csdn.net/qq_37422196/article/details/81321282
今日推荐