检测C++应用程序是在32位还是64位Windows上运行

Vio*_*ffe 2 c++ windows 64-bit winapi

这是一个相当受欢迎的问题,但所有答案都说:"使用IsWow64Process函数".问题是,如果应用程序是64位,则返回FALSE.我想要一个无论我的应用程序的位数如何都能运行的解决方案.

cdm*_*dmh 5

创建一个函数来调用32 IsWow64Process()位进程的Win32 API函数并返回true64位进程.

bool is_64bit(void)
{
#if defined(_WIN64)
    return true;  // 64-bit programs run only on Win64
#elif defined(_WIN32)
    BOOL f64 = FALSE;
    return IsWow64Process(GetCurrentProcess(), &f64) && f64;
#endif
}
Run Code Online (Sandbox Code Playgroud)

  • 你的`#if` ...`#elif` ...`#endif`不包含`#else`子句.这是故意的吗?在这种特殊情况下,如果没有定义任何预处理程序符号,编译器将发出错误.一般来说,我更喜欢明确并在这种情况下使用`#error`预处理器指令. (2认同)