printf()与qDebug()在QtCreator中的执行顺序

printf() vs qDebug() order of execution in QtCreator

本文关键字:执行 顺序 qDebug printf QtCreator      更新时间:2023-10-16

给定以下调用:

printf ("Characters: %c %c n", 'a', 65);    
qDebug() << "adcasd";

为什么我在QtCreator应用程序输出中看到以下(反向)输出?

adcasd
Characters: a A

printf()直接写入stdout,并在每次遇到换行符时进行刷新。qDebug()写入调试器。Qt Creator在同一个窗口中显示两者(但通常使用不同的颜色),但它们是两个不同的流。因此,输出的顺序可能会有点混乱。

printf只有在可以检测到引用交互式设备的情况下,才会使用新行自动刷新。我不确定这里是什么情况,但您可以尝试在使用printf命令的行之后显式地使用fflush(stdout);刷新is。