读书人

请问关于Debug和Release编译选项的有关

发布时间: 2012-03-09 21:42:54 作者: rapoo

请教关于Debug和Release编译选项的问题,希望真的了解的人回答下
我写的代码经常Debug和Release模式下表现不同,不过大部分都是Debug下正常,Release下错误(可能是直接程序崩溃,也可能只是函数返回值是非预计的)。
有人告诉我一般可能是没有初始化变量,我想这种内存问题是绝大部分。
但是有没有可能是编译选项的不同造成的原因,而不是程序自己的问题?
1.比如“内联函数展开”为默认,就表现正常了,改为 /Ob1 就错误(Release模式下默认是/Ob1,Debug模式下默认是 “默认”)。这个也是程序的原因还是编译的原因?
2.关于优化选项,这个选项导致问题是程序原因还是编译原因?
3.关于“静态库中使用MFC”和“共享DLL中使用MFC”出现的原因是程序原因还是编译原因(有人说过这个有可能是编译原因)?

[解决办法]
经常?我汗,我写了很久才发现过几次,改改就好了,认真的查看,警告级到4级吧
[解决办法]
良好的编码习惯能保证代码不依赖编译器行为中未定义的细节。
[解决办法]
变量未初始化在release下会出问题的,你查查
[解决办法]
代码主逻辑确保 一致性是最重要的, DEBUG 校验比较多, 但是仅仅只能够限于断言作用, 如果因为校验而走了不同分支处理, 则很可能Release 版本由于为了速度而省略校验, 则导致行为不同而无从验证。
然后, 注意不要把关键代码写入 assert 等的 Release 模式下被忽略的语句段。

读书人网 >C++

热点推荐