Вот некоторая информация [приблизительно 110] Предопределенные Макросы Архитектуры и другие типы предопределенных макросов.
Этот вопрос спрашивает, где они определяются в исходном коде GCC.
Нет ничего стандартного. Brian Hook зарегистрировал набор их в его "Портативном Ремне безопасности С открытым исходным кодом", и даже пытается превратить их во что-то когерентное и применимое (ymmv относительно этого). См. posh.h заголовок на этом сайте:
Примечание, ссылка выше может потребовать, чтобы Вы ввели некоторый поддельный идентификатор пользователя/пароль из-за DoS-атаки некоторое время назад.
Нет никакого стандарта межкомпилятора, но каждый компилятор имеет тенденцию быть довольно последовательным. Можно создать заголовок для себя, это - что-то вроде этого:
#if MSVC
#ifdef _M_X86
#define ARCH_X86
#endif
#endif
#if GCC
#ifdef __i386__
#define ARCH_X86
#endif
#endif
нет большого количества точки к всестороннему списку, потому что существуют тысячи компиляторов, но только 3-4 в широком использовании (Microsoft C ++, GCC, Intel CC, возможно, TenDRA?). Просто решите, какие компиляторы Ваше приложение будет поддерживать, перечислите их #defines и обновите Ваш заголовок по мере необходимости.
При необходимости в мелкомодульном обнаружении функций CPU лучший подход должен поставить также программу CPUID который выводы к stdout или некоторому "cpu_config.h" файлу набор функций, поддерживавших ЦП. Тогда Вы интегрируете ту программу со своим процессом сборки.