有some new integer types在 Windows API 中支持 Win64。他们并不总是得到支持;例如they aren't present in MSVC6 .
我怎样才能写一个 #if
<windows.h>
是否支持这些类型的检测条件?
(我的代码需要在许多不同版本的 Microsoft Visual C++ 下编译,包括 MSVC6。因此我需要提供我自己对这些类型的定义,并带有 #if
以在较新的编译器中禁用它们)。
(对于搜索者,完整的类型列表是:DWORD_PTR、INT_PTR、LONG_PTR、UINT_PTR、ULONG_PTR)
最佳答案
宏MSC_VER
是在 [1200, 1300)
范围内的值对于 MSVC 6。所以你可以使用 #if MSC_VER>=1200 && MSC_VER<1300
.
编辑:正如安德斯所说,除了“是我的编译器 MSVC 6”之外,这并不是真正有效的测试。但是,您也可以使用:
#if defined(MAXULONG_PTR)
自 DWORD_PTR
是值类型,它在 basetsd.h
中定义了最大值.
关于c++ - 如何使用 ifdef 检测是否支持 Windows DWORD_PTR 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723284/