您不需要 64 位处理器来对 64 位数据类型执行算术运算。我所知道的所有 32 位编译器都支持 64 位整数的算术运算。如果硬件不允许本机算术,则编译器必须生成代码来执行算术。通常这将利用编译器 RTL 中的支持函数。
该结构旨在供不为 64 位数据类型提供本机支持的编译器使用。您链接到的文档清楚地说明了这一点:
注意 您的 C 编译器可能原生支持 64 位整数。例如,Microsoft Visual C++ 支持__int64大小的整数类型。有关详细信息,请参阅 C 编译器随附的文档。
不支持本机 64 位整数的编译器将无法将QUADPART
联合成员视为整数。
typedef union _ULARGE_INTEGER {
struct {
DWORD LowPart;
DWORD HighPart;
};
struct {
DWORD LowPart;
DWORD HighPart;
} u;
ULONGLONG QuadPart;
} ULARGE_INTEGER, *PULARGE_INTEGER;
以及 的定义ULONGLONG
:
#if !defined(_M_IX86)
typedef unsigned __int64 ULONGLONG;
#else
typedef double ULONGLONG;
#endif
当然,过去 10 年(或更长时间)编写的所有编译器都将原生支持 64 位整数。但是这个联合是很久以前引入的,那时的编译器环境会有所不同。查看 Windows 头文件时,请始终牢记历史和遗留问题。