我有一个函数,不是内联的。在打开编译优化选项后,居然整个函数给我跳过了我用MessageBox放在这个函数内部作测试的,Debug版本下正常,到了Release版怎么也进不了这个函数,生成调试信息后单步跟踪发现直接就跳过去了。对话框也没跳出来。禁用编译优化选项后一切正常了,这种问题怎么回事?

解决方案 »

  1.   

    是不是你的函数没什么用处啊?比如 void myfun(){ int a=10;}
     这样可能被优化掉
      

  2.   

    那应该是编译器认为你要调用的函数需要优化,而优化之后也有可能把这部分代码给隔离掉,区分优化和不优化的代码。所以它不进来?我只是个人观点,你可以去google下。
      

  3.   


    你先把Debug目录清空删除,再重新编译Debug版,看看是不是还正常???

      

  4.   

    不对,看错了,现在Debug版本错误更多。