社区导航

 

搜索
查看: 270|回复: 15

[讨论] Keil的优化真的很坑人

[复制链接]

155

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-1-19 21:17:22 | 显示全部楼层 |阅读模式
Keil的代码优化真的很坑人,昨天晚上的情况是选了-O0优化就会导致程序出错,今天又变成了不用-O0优化就会出错,搞得我都不知道怎么办才好了




本帖子中包含更多资源

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

x


回复

使用道具 举报

5614

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-1-19 21:42:35 | 显示全部楼层
都是什么错误?

点评

定义一个u8类型的变量,用来保存从EEPROM里面读出来的一个字节,结果编译器优化会导致代码的逻辑被胡乱简化,怎么读取那个变量都是255,或者数据写不进EEPROM  详情 回复 发表于 2019-1-19 23:39
虾扯蛋


回复

使用道具 举报

155

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-1-19 23:39:42 | 显示全部楼层

定义一个u8类型的变量,用来保存从EEPROM里面读出来的一个字节,结果编译器优化会导致代码的逻辑被胡乱简化,怎么读取那个变量都是255,或者数据写不进EEPROM


回复

使用道具 举报

502

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2019-1-19 23:58:23 | 显示全部楼层
大多数情况下都是代码本身不够严谨导致的

点评

我定义了一个8bit的变量,然后从24C02里面读取一个字节赋值给他,够严谨吗  详情 回复 发表于 2019-1-20 10:42
刻苦学习,共同进步


回复

使用道具 举报

1万

TA的帖子

15

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-1-20 07:24:43 | 显示全部楼层
都莫认就行了,一般的别碰,因为莫认是大多数情况下不出问题的总结。所以尽量用莫认设置。如果默认还是出错那就找别的原因

点评

有些情况就是用了默认导致出错的  详情 回复 发表于 2019-1-20 10:41
http://shop34182318.taobao.com/


回复

使用道具 举报

155

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-1-20 10:41:02 | 显示全部楼层
ddllxxrr 发表于 2019-1-20 07:24
都莫认就行了,一般的别碰,因为莫认是大多数情况下不出问题的总结。所以尽量用莫认设置。如果默认还是出错 ...

有些情况就是用了默认导致出错的


回复

使用道具 举报

155

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-1-20 10:42:34 | 显示全部楼层
迈尔风随 发表于 2019-1-19 23:58
大多数情况下都是代码本身不够严谨导致的

我定义了一个8bit的变量,然后从24C02里面读取一个字节赋值给他,够严谨吗


回复

使用道具 举报

7260

TA的帖子

4933

TA的资源

博客管理员

Rank: 6Rank: 6

资源大师勋章

发表于 2019-1-20 17:59:44 | 显示全部楼层
我感觉这种情况下,应该不是优化的问题,可能是程序本身读写I2C有问题,

点评

不是,改了优化级别就对了  详情 回复 发表于 2019-1-20 18:16


回复

使用道具 举报

155

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-1-20 18:16:44 | 显示全部楼层
tiankai001 发表于 2019-1-20 17:59
我感觉这种情况下,应该不是优化的问题,可能是程序本身读写I2C有问题,

不是,改了优化级别就对了

点评

像你说的这种情况,我总感觉问题的根源不在优化的选择,因为你有时候选择优化出问题,有时候不选择优化也出问题。这就很难解释得通。  详情 回复 发表于 2019-1-21 15:13


回复

使用道具 举报

1534

TA的帖子

1

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2019-1-20 19:57:51 来自手机 | 显示全部楼层
所以我基本关掉优化。优化不出问题还好,一旦出问题就是诡异而无解。

点评

问题是有时候选择不优化反而出问题  详情 回复 发表于 2019-1-21 08:58


回复

使用道具 举报

155

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-1-21 08:58:10 | 显示全部楼层
freebsder 发表于 2019-1-20 19:57
所以我基本关掉优化。优化不出问题还好,一旦出问题就是诡异而无解。

问题是有时候选择不优化反而出问题

点评

那就是你本身程序的问题,初学者应该好好把基础打牢,不要过多抱怨编译器,不是说编译器不会有bug,通常编译器出bug的概率很低,99%的问题都是出在对程序理解不深刻导致的。 如果你只对某个变量赋值,但是没有使用  详情 回复 发表于 2019-1-21 09:21


回复

使用道具 举报

5490

TA的帖子

192

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-1-21 09:21:17 | 显示全部楼层
lingking 发表于 2019-1-21 08:58
问题是有时候选择不优化反而出问题

那就是你本身程序的问题,初学者应该好好把基础打牢,不要过多抱怨编译器,不是说编译器不会有bug,通常编译器出bug的概率很低,99%的问题都是出在对程序理解不深刻导致的。
如果你只对某个变量赋值,但是没有使用,编译器会给优化掉的,所以说赋值就很严谨吗

点评

没看过代码不要轻易说这种话  详情 回复 发表于 2019-1-21 10:45
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,虽然在群里买不到板子,但是可以学会开车;虽然学不到技术,但是可以学会开车;商家勿入!加群暗号:喵


回复

使用道具 举报

155

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-1-21 10:45:31 | 显示全部楼层
lcofjp 发表于 2019-1-21 09:21
那就是你本身程序的问题,初学者应该好好把基础打牢,不要过多抱怨编译器,不是说编译器不会有bug,通常 ...

没看过代码不要轻易说这种话

点评

我只是说说,并没针对你的代码。  详情 回复 发表于 2019-1-21 14:08


回复

使用道具 举报

5490

TA的帖子

192

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-1-21 14:08:59 | 显示全部楼层
lingking 发表于 2019-1-21 10:45
没看过代码不要轻易说这种话

我只是说说,并没针对你的代码。
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,虽然在群里买不到板子,但是可以学会开车;虽然学不到技术,但是可以学会开车;商家勿入!加群暗号:喵


回复

使用道具 举报

7260

TA的帖子

4933

TA的资源

博客管理员

Rank: 6Rank: 6

资源大师勋章

发表于 2019-1-21 15:13:49 | 显示全部楼层
lingking 发表于 2019-1-20 18:16
不是,改了优化级别就对了

像你说的这种情况,我总感觉问题的根源不在优化的选择,因为你有时候选择优化出问题,有时候不选择优化也出问题。这就很难解释得通。


回复

使用道具 举报

6854

TA的帖子

17

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-1-22 16:51:51 | 显示全部楼层
代码贴出来看下啊
training


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-2-18 10:02 , Processed in 0.421228 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表