c++ - 如何使用 ifdef 检测是否支持 Windows DWORD_PTR 类型?

标签 c++ c windows visual-c++ win64

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/

相关文章:

c++ - 链接 mysql_library_end()

c - Linux、C语言中是否可以不使用任何系统调用来监视内存?

c - Grand Central Dispatch 中的线程数和线程数

c# - 如何从 .Net Core 3 创建 Windows 服务

c++ - 重新安排条件评估会加速循环吗?

c++ - 如何在 C++ 中创建具有非标准顺序的整数集?

c - 为什么在 C 中调用函数时要指定函数的返回类型?

javascript - 如何从 HTML5 使用 native 代码 (windows)

windows - WinXP和Win7下的Delphi app manifest文件问题

c++ - c++中的异常机制问题