打印

请问可以对某个函数设置优化级别么?

[复制链接]
2290|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2009-12-4 08:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
HWM| | 2009-12-4 09:00 | 只看该作者
好象未见,因为通常优化都是全局(至少是整个模块)进行的。具体看编译是否提供了相应的“编译指引”(directive)。

使用特权

评论回复
板凳
xlsbz|  楼主 | 2009-12-4 09:03 | 只看该作者
多谢!看样子没招了!只能单独为这个函数弄个  .c了!

使用特权

评论回复
地板
xwj| | 2009-12-4 09:12 | 只看该作者
一般的 编译器都是可以的,自己去仔细看看帮助,搜索optimization、#pragma等

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xlsbz + 1
5
HWM| | 2009-12-4 09:25 | 只看该作者
查了一下Keil C,有相应的“指引”

#pragma OT(n)

其中 n 为所选优化级别。

LZ可以根据4L所说的查相关的编译说明。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xlsbz + 1
6
xlsbz|  楼主 | 2009-12-4 10:21 | 只看该作者
本帖最后由 xlsbz 于 2009-12-4 10:31 编辑

OK了!!
好用!我用的是keil8.18
======================
#pragma OT(m)
定义函数A
{
    代码;
}
定义函数B
{
    代码
}
则无论在keil选的options选的哪一级别的优化,函数AB都是m级别优化

=============




定义函数A
{
    代码;
}

#pragma OT(m)
定义函数B
{
    代码;
}

则函数A都是在keil选的options选的那个优化项目,函数B是m级别

========================

注:实际应用时 可将m换成0-9 现在的版本一般共有9级。


     必须在定义函数的地方写#pragma OT(m),在调用函数地方写没有用!

    比如:
    定义函数A
{
    代码;
}


main()
{
  while(1){
      #pragma OT(m),
      函数A();
    }

}

那么函数A的级别不是m

使用特权

评论回复
7
ejack| | 2009-12-4 12:36 | 只看该作者
看到LZ这么热情好学,俺还是蛮感动的:)

编译指示:OPTIMIZE
简写:OT
参数:0~9的数字,代表相应的优化级别。此外OPTIMIZE(SIZE)或OPTIMIZE(SPEED)也是可接受的参数。
默认值:OPTIMIZE(8,SPEED)
描述:OPTIMIZE编译指示用于设置优化的级别及重点。


结合SAVE/RESTORE编译指示,能够实现非常灵活的优化设置。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xlsbz + 1
8
xlsbz|  楼主 | 2009-12-4 15:16 | 只看该作者
晕倒了 对不同的CPU ,keil采取了不同的编译

我刚在这个CPU写了个软件延时 到了另一个CPU用,竟然不好用?

花费我大把时间搞定了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1614

帖子

4

粉丝