奇怪的C++问题,困扰好久了

lucifer886 2014-11-27 02:59:25
首先说下代码结构,有B、C两个类
C类是一个封装了linux的串口操作,读写和配置。
B类是一个聚合了C类的一个对象(或者指针),进行稍微高级的一些操作,发送一些特定指令。

然后使用B类要达到的效果是:
调用B.clear()接口,实现清屏的操作,屏幕能正确相应并且返回正确的值ff

我对C/B/A类分别作了单独的测试,
C类的单元测试都很正常;
问题1:B类就出现了奇怪的情况,如果我是new B类出来的话,返回值就变成了7F,但是屏幕是正常执行了清屏操作(也就是说正常响应了指令);如果是直接创建一个B类对象,就是正常的。我后来排查了一下原因,我把B类里定义的抛出异常都给去掉了,然后new B也正常了。但是我还是不知道为什么……

然后我暂时没管B类怎么样,就把B\C两个个类都合到了我的程序里。更奇怪的事情出现了:
问题2:主程序里B类表现开始又不正常了,所以我把整个main里的代码都注释掉,然后把测试B类的代码贴上去,编译,好家伙,又给我返回7F了……我检查了下编译参数,都是一致的……突然觉得这个编译器是不是在玩我。

...全文
481 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lucifer886 2014-12-02
  • 打赏
  • 举报
回复
引用 8 楼 jordancar 的回复:
还是先看看是不是代码问题吧,编译器千锤百炼,一般不会出问题的。
我也是这么想的,后来我试着把代码放到上位机的环境下测试了,-g加上也是正常的。 我看了下ARM下的debug版本库运行库是没有的,是不是这里出了些问题。
小布 2014-11-29
  • 打赏
  • 举报
回复
还是先看看是不是代码问题吧,编译器千锤百炼,一般不会出问题的。
layershow 2014-11-27
  • 打赏
  • 举报
回复
引用 5 楼 lucifer886 的回复:
问题算是找到,我也不知道该怎么贴代码才比较清晰……问题算是找到了,简直令我不能相信,最终定位到编译器的-g参数上,加上这个参数就出问题,不加一切正常……因为我用的某公司自己修改的一个arm下的编译器,估计-g支持有点问题吧……
是调试信息吗?你只是试了去掉就好了?我一般不敢怀疑工具的问题,建议还是仔细排查原因 自己用的代码就无所谓了,产品用的就是个不知道啥时候爆的炸弹
derekrose 2014-11-27
  • 打赏
  • 举报
回复
。。。。有点捉急
lucifer886 2014-11-27
  • 打赏
  • 举报
回复
问题算是找到,我也不知道该怎么贴代码才比较清晰……问题算是找到了,简直令我不能相信,最终定位到编译器的-g参数上,加上这个参数就出问题,不加一切正常……因为我用的某公司自己修改的一个arm下的编译器,估计-g支持有点问题吧……
ri_aje 2014-11-27
  • 打赏
  • 举报
回复
上代码。。。
漫步者、 2014-11-27
  • 打赏
  • 举报
回复
JiangWenjie2014 2014-11-27
  • 打赏
  • 举报
回复
你的返回值是怎么得到的呢,是直接reutrn 0xff还是通过别的方式组合后再返回的?实在不行单步调试
layershow 2014-11-27
  • 打赏
  • 举报
回复
我觉得编译器的问题可能性极低,是代码的问题,但是又看不到代码

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧