【发布时间】:2020-12-30 18:47:25
【问题描述】:
我正在阅读一些 Windows API 头文件,并且看到了一些我不理解的代码:
typedef void *HANDLE;
typedef HANDLE DPI_AWARENESS_CONTEXT;
#define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1)
从void * typedef 中减去一个值是什么意思?
【问题讨论】:
-
我认为它是 (void*) -1 的转换,而不是从 void* 中减去 1
-
假设
#define不存在,那么在代码中DPI_AWARENESS_CONTEXT将是指向某个地址的指针。现在让我们介绍#define。在所有出现的DPI_AWARENESS_CONTEXT中都会有一个尾随-1。指针算术中的那个意思是前面的地址。