在发布模式下,cout不会打印任何内容

时间:2013-09-30 14:27:46

标签: c++ release cout

我有一个非常奇怪的问题。我正在使用C ++中的visual studio,突然cout在发布模式下工作(直到现在才工作),在调试模式下工作正常。我不知道为什么那些人会开心。我试图删除一些代码我删除了几乎所有的程序(我有备份)。这是我的代码:

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow )
{
    AllocConsole();
    cout<<"asdasd"<<endl;

    cin.get();
    return 1;
}

在调试模式下,程序等待用户按Enter键。在发布模式下,它没有。窗户就在附近。

我认为这可能是视觉设置中的一个问题。可以吗?

1 个答案:

答案 0 :(得分:1)

iostreams需要通常由控制台应用程序的启动代码执行的初始化 - 但由于您使用WinMain而不是main作为入口点,因此它被链接为Windows-模式应用程序而不是控制台模式应用程序,因此不会发生初始化(可靠地,无论如何)。在一些(定义不明确)的情况下,事情无论如何都会起作用,但它最多也是不可靠的。

除非你感到如此自虐,以至于你只是为了使你的代码不可移植而愿意做很多额外的工作,所以用标准的方式编写你的代码:

#include <iostream>

int main() {
    std::cout<<"asdasd\n";

    std::cin.get();
    return 1;
}

简短,可靠,都是好事。便携式也很不错。