gpt4 book ai didi

c++ - 如何使用 ULARGE_INTEGER 进行算术运算

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:10 25 4
gpt4 key购买 nike

我有一个应用程序,我在其中不断检查磁盘空间并将其与特定值进行比较。现在磁盘空间计算如下:

ULARGE_INTEGER p1;
ULARGE_INTEGER p2;
ULARGE_INTEGER p3;
GetDiskFreeSpaceEx(".", &p1, &p2, &p3);

现在从上面的方法我得到变量 p3 中的可用空间。现在我如何将它与普通整数值进行比较(也包括算术运算)。此外,此代码必须适用于 32 位和 64 位平台。或者是否有任何其他选项来计算可用磁盘空间?谢谢

最佳答案

ULARGE_INTEGER 是 Windows API 在编译器具有 native 64 位类型之前表示 64 位值的方式。

如今,在带有 Visual C++ 编译器的 Windows 上,在 ULARGE_INTEGER* 和 64 位 native 类型(例如 uint64_t* 之间进行指针转换是安全的unsigned long long*.

int compile_time_assert[(sizeof(ULARGE_INTEGER) == sizeof(unsigned long long)) ? 1 : -1];

unsigned long long freebytes = 0;
unsigned long long totalbytes = 0;
unsigned long long totalfree = 0;
GetDiskFreeSpaceEx(".", (ULARGE_INTEGER*)&freebytes, (ULARGE_INTEGER*)&totalbytes, (ULARGE_INTEGER*)&totalfree);

否则,如果您想避免 cast hackery,您可以改为这样做:

ULARGE_INTEGER p1 = {0};
ULARGE_INTEGER p2 = {0};
ULARGE_INTEGER p3 = {0};
unsigned long long freebytes = 0;
unsigned long long totalbytes = 0;
unsigned long long totalfree = 0;
GetDiskFreeSpaceEx(".", &p1, &p2, &p3);

freebytes = p1.QuadPart;
totalbytes = p2.QuadPart;
totalfree = p3.QuadPart;

关于c++ - 如何使用 ULARGE_INTEGER 进行算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46794133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com