编译环境 VS2008, release模式。
今天,对于如下的code进行debug,单步运行。
此时index的值是1,我们一般会认为code走到36行,然后退出。
但是,实际上,code走到38行,当时我们就凌乱了,难道code中if语句有问题,看了又看。茫然。。。。。。
忽然想到,VS在release模式下,对于code有优化。。。
看看汇编code吧,果然,VS把return 优化了,只有在函数结束的时候才执行ret。事实上,汇编代码是执行了ret之前的pop操作。
但是C++调试界面显示的却是38行,视觉的误差,那是VS在逗我们。。。哈哈。
因为‘}’对应的汇编code,只是ret。
BTW,当函数比较cute的时候,VS会对函数做inline 优化。。。。