我有一个非常奇怪的问题。我正在使用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键。在发布模式下,它没有。窗户就在附近。
我认为这可能是视觉设置中的一个问题。可以吗?
答案 0 :(得分:1)
iostreams需要通常由控制台应用程序的启动代码执行的初始化 - 但由于您使用WinMain
而不是main
作为入口点,因此它被链接为Windows-模式应用程序而不是控制台模式应用程序,因此不会发生初始化(可靠地,无论如何)。在一些(定义不明确)的情况下,事情无论如何都会起作用,但它最多也是不可靠的。
除非你感到如此自虐,以至于你只是为了使你的代码不可移植而愿意做很多额外的工作,所以用标准的方式编写你的代码:
#include <iostream>
int main() {
std::cout<<"asdasd\n";
std::cin.get();
return 1;
}
简短,可靠,都是好事。便携式也很不错。