奇怪的C++问题,困扰好久了
首先说下代码结构,有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了……我检查了下编译参数,都是一致的……突然觉得这个编译器是不是在玩我。