Eclipse C 控制台打印订单Linux

Eclipse C++ console print order linux

本文关键字:Linux 打印 控制台 Eclipse      更新时间:2023-10-16

我知道有很多主题,但它们都没有帮助我。

我在C/C 项目std::coutstd::cerr中使用以打印信息(COUT)或错误(CERR)。但是,当执行它时,他们不以正确的顺序打印,他们似乎要"集体打印"。有时所有的cerr,然后所有的cout,有时所有cout首先,然后所有cerr。

我尝试每行 flush(),不工作。(幸运的是,每次都必须使用它会很糟糕...)。也尝试了setvbuf(stdout, NULL, _IONBF, 0);相同的问题...

如果直接在Linux的控制台中运行程序,则顺序很好,但由于颜色,Eclipse控制台更有用。

在这里代码示例

#include <iostream>
int main(int argc, char** argv)
{
    std::cerr << __LINE__ << std::endl;
    std::cerr << __LINE__ << std::endl;
    std::cout << __LINE__ << std::endl;
    std::cerr << __LINE__ << std::endl;
    std::cerr << __LINE__ << std::endl;
    std::cout << __LINE__ << std::endl;
}

和控制台打印

11
12
14
15
13
16

==>错误的顺序...在此示例中

好的,情况如下, std::cout添加到缓冲区中,而 std::cerr却没有。std::cerr更快,不需要冲洗。std::cerrstd::cout也使用不同的流。

这里的问题是std::cerr立即显示,并且在显示之前需要冲洗std:cout