2013-03-28 102 views
0

我已經構建了真正簡單的win32控制檯程序,使用C++中的Microsoft Visual Studio 2012 Ultimate IDE;控制檯程序調試/發佈

這是代碼:

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int i = 0; 
    i++; 
    return = 0 
} 

調試通過行的代碼行,我注意到了這一點:

在調試的x64模式,argc = 1argv[0] = the program's path

在發佈的x64模式,argc = some random large numberargv[0] = some random path or simply 0x00000001

這是爲什麼?

任何幫助,將不勝感激。

+1

添加'COUT << argc'看看然後會發生什麼。優化器將無法忽略該變量。 –

回答

5

發佈模式的默認構建選項不會讓您在發佈模式下進行合理的調試。編譯器在發佈模式下使用的優化意味着編譯後的代碼看起來可能與您編寫的代碼完全不同(但邏輯上相同)。

目前已經是一個很好的答案,看How to debug in release mode?