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

[复制链接]
2960|7
 楼主| xlsbz 发表于 2009-12-4 08:50 | 显示全部楼层 |阅读模式
请问可以对某个函数单独设置优化级别么?

有没有什么指令.....

比如说:

#set 优化级别 2
void 函数名(void)
{
   //这里是函数代码
}
#end
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

查看全部评分

HWM 发表于 2009-12-4 09:25 | 显示全部楼层
查了一下Keil C,有相应的“指引”

#pragma OT(n)

其中 n 为所选优化级别。

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

评分

参与人数 1威望 +1 收起 理由
xlsbz + 1

查看全部评分

 楼主| 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
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

查看全部评分

 楼主| xlsbz 发表于 2009-12-4 15:16 | 显示全部楼层
晕倒了 对不同的CPU ,keil采取了不同的编译

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

花费我大把时间搞定了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1614

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部