我有一个很奇怪的问题。我正在使用 C++ 中的 visual studio 工作,突然 cout 在 Release模式下不起作用(它一直工作到现在),在 Debug模式下它工作正常。我不知道为什么会这样。我试图删除一些代码并且删除了几乎所有程序(我有备份)。这是我的代码:
#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;
}
在 Debug模式下,程序等待用户按下 Enter。在 Release模式下它没有。 window 刚刚关闭。
我觉得可能是视觉设置的问题。可以吗?
最佳答案
iostreams 需要通常由控制台应用程序的启动代码执行的初始化——但由于您使用 WinMain
而不是 main
作为入口点,它是作为 Windows 模式应用程序而不是控制台模式应用程序链接,因此不会发生初始化(无论如何,可靠地)。在某些(定义不明确的)情况下,事情无论如何都会起作用,但充其量是不可靠的。
除非你觉得自己很自虐以至于愿意做很多额外的工作只是为了让你的代码不可移植,否则请以标准方式编写你的代码:
#include <iostream>
int main() {
std::cout<<"asdasd\n";
std::cin.get();
return 1;
}
简短、简单和可靠都是好东西。便携也不错。
关于c++ - 在 Release模式下 cout 不打印任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19096778/