Ну, как говорится в заголовке
, есть ли способ получить системную архитектуру в c ++?
Спасибо!
Исходя из "динамически" и "Visual C ++", я предполагаю, что вы хотите сделать это во время выполнения под Windows.
В этом случае вы можете использовать GetSystemInfo или GetNativeSystemInfo, чтобы получить основную информацию о системе и процессоре. Если вам нужна дополнительная информация о процессоре и конкретных функциях, которые он поддерживает, вы можете использовать IsProcessorFeaturePresent, чтобы найти их (хотя это может быть немного неудобно для этой цели - вы должны спросить о каждой функции в отдельности и дает логический ответ для каждого).
GetSystemInfo
GetNativeSystemInfo
IsProcessorFeaturePresent
Хороший большой список здесь . Макросы отличаются для Visual Studio и GCC, но просто проверьте, определены ли они с #ifdef.
#ifdef
Что-то вроде:
#if defined(_M_IX86) || defined(__i386__)
Должен предоставить вам GCC, Visual Studio и несколько других.
#if defined(_M_X64) ... #endif
На платформах x64 sizeof(void*) возвращает 8. На платформах x32 sizeof(void*) возвращает 4. Это также должно быть кроссплатформенным.
sizeof(void*)
Вы всегда можете смешать несколько строк встроенной сборки и вызвать CPUID для определения процессора, на котором выполняется ваш код.См. Эту статью о том, как это сделать:
http://www.intel.com/Assets/PDF/appnote/241618.pdf