VC2005编译优化选项之玄机
在VC編程中,你是不是發現一個程序在最優化后,其運行行為就不是你想要的,而在不優化的時候,卻表現出是你想要的,神奇吧?OK,帶你來看其中一種這種情況:
?
在VC2005中的一個c++ 返回值為bool類型的函數,該bool類型函數的默認返回值應該true還是false ? 不一定是true也不一定是false?, 而是隨著編譯優化選項而變化。具體進行了如下測試
#include <iostream>
using namespace std;
//測試test函數4種優化情況的返回值結果如下:
//不優化???????????? /od false?
//最小體積優化? /o1 true
//最大速度優化 /o2 true
//完全優化???????? /ox true
bool test(bool b)
{
?if (b)
?{
??return true;
?}
}
int _tmain(int argc, _TCHAR* argv[])
{
?if (test(false))
?{
??cout<<"true"<<endl;
?}
?else
?{
??cout<<"false"<<endl;
?}
?return 0;
}
總結:其實并不是編譯器的錯,而是代碼寫得不夠嚴格和規范O(∩_∩)O哈哈~
?
當然,其實只要注意編譯器的警告選項就行了:
f:\2013\algorithm\algorithm\algorithm.cpp(106) : warning C4715: 'test' : not all control paths return a value
總結
以上是生活随笔為你收集整理的VC2005编译优化选项之玄机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android定位!每个程序员都必须掌握
- 下一篇: Unity3DShader基础(CG)