Решение довольно простое. Если вы компилируете для 64-битной версии, вы уже знаете, что работаете в 64-битной версии Windows. Так что вам нужно только вызвать IsWow64Process при компиляции для 32-битного. Следующая реализация возвращает true
, если она работает в 64-разрядной версии Windows:
bool Is64BitPlatform() {
#if defined(_WIN64)
return true; // 64-bit code implies a 64-bit OS
#elif defined(_WIN32)
// 32-bit code runs on a 64-bit OS, if IsWow64Process returns TRUE
BOOL f = FALSE;
return ::IsWow64Process(GetCurrentProcess(), &f) && f;
#else
#error Unexpected platform.
#endif
}
Это отвечает на вопрос, который вы задали. Ответ на вопрос, который вы должны были задать вместо этого, был опубликован в ответе Джерри Коффина : просто позвоните GetNativeSystemInfo .