首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化级宏(ARMCC V6)

优化级宏(ARMCC V6)
EN

Stack Overflow用户
提问于 2020-08-02 18:15:48
回答 1查看 142关注 0票数 0

有预定义的宏,如__OPTIMIZE__(在所有优化编译中定义)和__OPTIMIZE_SIZE__(如果编译器正在优化大小)。

我使用这些宏来检查是否为发布目标设置了正确的优化级别,如果没有,则打印一个警告。

是否有可能检查是否设置了优化级别-Ofast?可能是__OPTIMIZE_FAST____OPTIMIZE_SPEED__之类的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-13 03:37:22

我检查了ARMCC命令行选项,似乎没有像许多其他编译器那样的-Ofast。但是如果行为和GCC/Clang/ICC一样的话.那么-Ofast本质上就是-O3--fpmode=fast,所以您可以使用__FP_FAST来检查它,可能是与__OPTIMISE_LEVEL一起进行的。

在GCC里,你可以使用__FAST_MATH__。也可以使用__NO_MATH_ERRNO__,尽管它可能不是完全匹配的,因为如果指定了-fno-math-errno,也会定义它

代码语言:javascript
复制
#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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63219539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档