2013-03-28 59 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?