本身这个问题很简单,提示也说的很清楚,val没有初始化。
但是,奇怪的地方在于去查看myfile.cpp:15并没有 val 这个变量,myfile.cpp:15 指向了一个函数myfunc()的开头,这个函数里面压根并没有定义val这个变量。甚至,整个myfile.cpp里面也没有定义这个变量。
解决方法:
- 经过查找资料发现,myfile.cpp在编译的时候是加了 -O3优化选项的,经过测试发现除去把-O3删掉,问题就会消失,O3优化具体做了什么可以自行google。但问题是我就是需要-O3,那怎么办?
- 通过一行行的注释myfile.cpp:myfunc() 进一步定位问题发现,问题出在了某行的一个函数调用上,该函数是一个inline的函数,该inline函数其中的一个形参变量命名是 “val”。考虑到inline函数在执行时就是拷贝到调用处,再考虑到使用了O3, 所以估计是O3在做优化的时候,弄出了一个uninitialized的‘val’吧。所以解决方法就很简单了,把那个inline的函数改成非inline的就可以了。