Я проверил параметры командной строки ARM CC и, похоже, нет -Ofast
, как во многих других компиляторах. Однако, если поведение такое же, как в GCC / Clang / I CC ... тогда -Ofast
по сути просто -O3
с --fpmode=fast
, поэтому вы можете проверить его с помощью __FP_FAST
, возможно, вместе с __OPTIMISE_LEVEL
В G CC вы можете использовать __FAST_MATH__
. __NO_MATH_ERRNO__
также можно использовать, хотя это может быть не точное совпадение, потому что оно также будет определено, если указано -fno-math-errno
#ifdef __OPTIMIZE__
printf("Optimized\n");
#ifdef __ARMCC_VERSION
#if defined(__FP_FAST) && __OPTIMISE_LEVEL >= 3
printf("-Ofast ARMCC\n");
#endif
#elif defined(__GNUC__)
#if defined(__FAST_MATH__)
// #if defined(__NO_MATH_ERRNO__)
printf("-Ofast GNUC\n");
#endif
#endif
#endif