- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我遇到 LARGE_INTEGER 的定义时。我发现了一些问题:
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
} DUMMYSTRUCTNAME;
struct {
DWORD LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER;
我们能否重写如下:
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
} DUMMYSTRUCTNAME;
LONGLONG QuadPart;
} LARGE_INTEGER;
我认为结构 u 是重复的。那么为什么 MSVC 会这样实现 LARGE_INTEGER 呢?我想知道可能是出于某种原因,例如兼容性。
最佳答案
这显然是一种调整,以避免在 union 中使用匿名结构。这已被 Visual C++ 支持,但语言标准不允许。 (有关不带 DUMMYSTRUCTNAME
的结构声明,请参阅 can't make sense of LARGE_INTEGER struct。)可能会使用某种自动化工具来添加该名称以使 union 符合标准 C++。
Later versions LARGE_INTEGER
完全摆脱了结构,只有 QuadPart
。
关于c++ - LARGE_INTEGER 和 DUMMYSTRUCTNAME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52732164/
我正在完成 Windows 系统编程的练习,但我没有完全理解 LARGE_INTEGER 和 OVERLAPPED 结构。例如,我在 main 中定义了以下结构。第一个结构用于跟踪记录数。第二个用于记
如何将整数转换为 LARGE_INTEGER? 例如,当我想立即触发一个定时器时: LARGE_INTEGER zero; zero.QuadPart = 0; KeSetTimer(pTimer
我试图在 C++ 中增加 LARGE_INTEGER,但出现以下错误。 Error C2397: conversion from 'LONGLONG' to 'DWORD' requires a na
我在 Win32 下的 MS dev studio 中将一些代码从 C 转换为 C++。在旧代码中,我使用 QueryPerformanceCounter() 进行了一些高速计时,并对获得的 __in
在Windows.pas中,有: LARGE_INTEGER = record case Integer of 0: ( LowPart: DWORD; H
我有一个更大的整数,它是由一个运算形成的 __int64 c = (bytesTransferred.HighPart*2^31 + bytesTransferred.LowPart) * 100/(
当我遇到 LARGE_INTEGER 的定义时。我发现了一些问题: typedef union _LARGE_INTEGER { struct { DWORD LowPart;
用C++和一些Winapi的东西,遇到了这个人: #if defined(MIDL_PASS) typedef struct _LARGE_INTEGER { #else // MIDL_PASS t
我正在使用 QueryPerformanceCounter(); 获取一个数字,用作要包含在文件名中的唯一时间戳。 LARGE_INTEGER performanceCount; QueryPerfo
函数原型(prototype): foo(_out_ PSIZE_T arg); 用法: LARGE_INTEGER offset = {0}; foo(&offset.QuadPart); // I
我正在研究一个转换为 Linux 的 Windows 代码和这个答案 here .Linux 中 LARGE_INTEGER 和 BYTE 之间可能没有单射数据类型,因此可能需要考虑特殊情况。 这两种
我正在尝试打印文件的大小和名称。 LARGE_INTEGER filesize; filesize.LowPart = ... ... printf("%ld %s\n", filesize.Quad
我有一个 CUDA VIDEO ENCODING 的示例代码,它最初是为 windows 编写的,在准备好 Make 文件并尝试编译它之后,由于 HRESULT 、 LARGE_INTEGER 和 D
我有以下代码: QueryPerformanceCounter(&timeStart); winMain::render(); //do stuff QueryPerformanceCounter(&
我是一名优秀的程序员,十分优秀!