在释放模式下,cout 不打印任何内容

On release mode cout does not print anything

本文关键字:打印 任何内 cout 释放 模式      更新时间:2023-10-16

我有一个非常奇怪的问题。我正在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 键。在发布模式下,它不会。窗户刚刚关闭。

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

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

除非你觉得自己很受虐狂,以至于你愿意做很多额外的工作来让你的代码不可移植,否则请以标准方式编写代码:

#include <iostream>
int main() {
    std::cout<<"asdasdn";
    std::cin.get();
    return 1;
}

简短、简单、可靠都是好东西。便携也不错。