10480|15

367

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

Keil的优化真的很坑人 [复制链接]

 
Keil的代码优化真的很坑人,昨天晚上的情况是选了-O0优化就会导致程序出错,今天又变成了不用-O0优化就会出错,搞得我都不知道怎么办才好了




最新回复

代码贴出来看下啊  详情 回复 发表于 2019-1-22 16:51
点赞 关注(1)
个人签名拿PADS和Allegro软件来吹牛的都是些土鳖
 
 

回复
举报

9803

帖子

24

TA的资源

版主

沙发
 
都是什么错误?

点评

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

回复

367

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

定义一个u8类型的变量,用来保存从EEPROM里面读出来的一个字节,结果编译器优化会导致代码的逻辑被胡乱简化,怎么读取那个变量都是255,或者数据写不进EEPROM
个人签名拿PADS和Allegro软件来吹牛的都是些土鳖
 
 
 

回复

578

帖子

0

TA的资源

纯净的硅(初级)

4
 
大多数情况下都是代码本身不够严谨导致的

点评

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

回复

1万

帖子

16

TA的资源

版主

5
 
都莫认就行了,一般的别碰,因为莫认是大多数情况下不出问题的总结。所以尽量用莫认设置。如果默认还是出错那就找别的原因

点评

有些情况就是用了默认导致出错的  详情 回复 发表于 2019-1-20 10:41
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 
 

回复

367

帖子

0

TA的资源

一粒金砂(高级)

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

有些情况就是用了默认导致出错的
个人签名拿PADS和Allegro软件来吹牛的都是些土鳖
 
 
 

回复

367

帖子

0

TA的资源

一粒金砂(高级)

7
 
迈尔风随 发表于 2019-1-19 23:58
大多数情况下都是代码本身不够严谨导致的

我定义了一个8bit的变量,然后从24C02里面读取一个字节赋值给他,够严谨吗
个人签名拿PADS和Allegro软件来吹牛的都是些土鳖
 
 
 

回复

6366

帖子

4912

TA的资源

版主

8
 
我感觉这种情况下,应该不是优化的问题,可能是程序本身读写I2C有问题,

点评

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

回复

367

帖子

0

TA的资源

一粒金砂(高级)

9
 
tiankai001 发表于 2019-1-20 17:59
我感觉这种情况下,应该不是优化的问题,可能是程序本身读写I2C有问题,

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

点评

像你说的这种情况,我总感觉问题的根源不在优化的选择,因为你有时候选择优化出问题,有时候不选择优化也出问题。这就很难解释得通。  详情 回复 发表于 2019-1-21 15:13
个人签名拿PADS和Allegro软件来吹牛的都是些土鳖
 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

10
 
所以我基本关掉优化。优化不出问题还好,一旦出问题就是诡异而无解。

点评

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

回复

367

帖子

0

TA的资源

一粒金砂(高级)

11
 
freebsder 发表于 2019-1-20 19:57
所以我基本关掉优化。优化不出问题还好,一旦出问题就是诡异而无解。

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

点评

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

回复

6040

帖子

195

TA的资源

版主

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

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

点评

没看过代码不要轻易说这种话  详情 回复 发表于 2019-1-21 10:45
 
 
 

回复

367

帖子

0

TA的资源

一粒金砂(高级)

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

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

点评

我只是说说,并没针对你的代码。  详情 回复 发表于 2019-1-21 14:08
个人签名拿PADS和Allegro软件来吹牛的都是些土鳖
 
 
 

回复

6040

帖子

195

TA的资源

版主

14
 
lingking 发表于 2019-1-21 10:45
没看过代码不要轻易说这种话

我只是说说,并没针对你的代码。
 
 
 

回复

6366

帖子

4912

TA的资源

版主

15
 
lingking 发表于 2019-1-20 18:16
不是,改了优化级别就对了

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

回复

6423

帖子

16

TA的资源

版主

16
 
代码贴出来看下啊
个人签名training
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表