6

根据 MSDN,RECT 和 RECTL 是相同的结构。它们之间有什么区别吗?如果没有的话,同时拥有它们而不是只有一个有什么意义?

4

1 回答 1

10

正如 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;

并且 ole2.h 头文件声明 RECTL 使用long作为结构元素。当时的16 位 C 和 C++ 编译器将int实现为 16 位类型,适合 16 位处理器的字长,并将long实现为 32 位类型。

现代 Windows 版本中使用的 32 位编译器使int成为 32 位类型,适合 32 位处理器的字长。并保持为 32 位类型。这使得两种结构类型之间的差异消失了。

于 2013-01-05T15:42:28.783 回答