在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 4793|回复: 10

[讨论] C程序被编译器优化掉了

[复制链接]
发表于 2012-4-9 17:25:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
C程序有的语句经过编译器编译后就被优化掉了,常用的解决方法有两种:1、调低编译器的优化级别
2、被优化的一般是nop语句,用别的语句代替,譬如定义一个不用的变量。

但以上方法有局限性,有没有方法在程序不想被优化的那一行加个标志告诉编译器不要动这句?
发表于 2012-4-10 09:20:55 | 显示全部楼层
最好注意写代码的质量吧
 楼主| 发表于 2012-4-10 18:03:02 | 显示全部楼层
回复 2# qingxuan1
不是程序质量的问题,譬如我写个软件延时,用如下经典方法int ture=100;
while(ture--)
{
nop();
nop();
}

编译之后把nop给优化没了
发表于 2014-6-13 15:55:59 | 显示全部楼层
有时优化会带来负面问题
发表于 2014-6-16 16:25:58 | 显示全部楼层
可以在循环内部加一条实际执行语句,如:
void Delay(int time)
{
    for (; time > 0; time--)
    {
        GPH1DAT &= ~(1 << 5);
    }
}
发表于 2014-6-20 17:26:53 | 显示全部楼层
asm volatile("nop");
发表于 2014-6-29 17:18:59 | 显示全部楼层
在變數宣告的同時再加上 "volatile", 可以防止 compiler 優化它.
发表于 2014-7-23 11:27:02 | 显示全部楼层
看看學習新知識
发表于 2014-7-31 22:26:49 | 显示全部楼层
谢谢分享
发表于 2014-8-11 14:37:19 | 显示全部楼层
是这样的,有时候需要自己设计一下编译器的编译选项哦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 02:14 , Processed in 0.026789 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表