RECTL 和 RECT 有啥区别?

Posted

技术标签:

【中文标题】RECTL 和 RECT 有啥区别?【英文标题】:What's the difference between RECTL and RECT?RECTL 和 RECT 有什么区别? 【发布时间】:2013-01-05 14:15:18 【问题描述】:

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

【问题讨论】:

【参考方案1】:

它们之间没有区别,如 MSDN 文章中所述。要了解它们为何存在,您必须回顾历史,回到 Windows 版本 3 及更早版本。这些是 Windows 的 16 位 版本,与现在每个人都使用的 Windows 版本不同。 Windows 3.1 的 Windows SDK 版本在 windows.h 中声明了这样的 RECT 结构:

typedef struct tagRECT

    int left;
    int top;
    int right;
    int bottom;
 RECT;

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

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

【讨论】:

当前的RECT 定义是否有任何理由使用LONG 而不是INT

以上是关于RECTL 和 RECT 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 中 required 和 @required 有啥区别。它们之间有啥区别,我们啥时候需要使用它们?

java中接口和类有啥区别java中接口和类有啥区别

Java 非堆内存和栈内存有啥区别?它们是不是相同,如果不同,它们之间有啥区别?

LMS和NLMS有啥区别

退还跟退回有啥区别?退回和退还有啥不同

VBS和JAVA和C++,有啥区别,有啥差距