它们之间没有区别,如MSDN文章中所述.要了解它们为何存在,您必须回到历史,回到Windows版本3及更早版本.那些是16位版本的Windows,不像今天每个人都使用的Windows版本.Windows 3.1的Windows SDK版本在windows.h中声明了这样的RECT结构:
typedef struct tagRECT
{
int left;
int top;
int right;
int bottom;
} RECT;
Run Code Online (Sandbox Code Playgroud)
并且ole2.h头文件使用long为结构元素声明了RECTL .16位C和C++编译器背面然后实现INT作为一个16位的类型,拟合16位处理器的字长,并实现长为32位的类型.
32位的编译器,如在现代的Windows版本中使用,由INT 32位类型,拟合32位处理器的字长.并且长期保持32位类型.这使得两种结构类型之间的差异消失了.