QtCreator 中 printf() 与 qDebug() 的执行顺序
printf() vs qDebug() order of execution in QtCreator
鉴于以下调用:
printf ("Characters: %c %c \n", 'a', 65);
qDebug() << "adcasd";
为什么我在 QtCreator 应用程序输出中看到以下(反转的)输出?
adcasd
Characters: a A
printf() 直接写入 stdout 并在每次遇到换行符时刷新。
qDebug() 写入调试器。 Qt Creator 以相同的 window(但通常以不同的颜色)显示两者,但它们是两个不同的流。因此输出的顺序可能会有点混乱。
printf
只有在可以检测到引用交互式设备时才会自动用新行刷新。我不确定这里是什么情况,但是您可以尝试在 printf
命令行之后使用 fflush(stdout);
显式刷新。
鉴于以下调用:
printf ("Characters: %c %c \n", 'a', 65);
qDebug() << "adcasd";
为什么我在 QtCreator 应用程序输出中看到以下(反转的)输出?
adcasd
Characters: a A
printf() 直接写入 stdout 并在每次遇到换行符时刷新。 qDebug() 写入调试器。 Qt Creator 以相同的 window(但通常以不同的颜色)显示两者,但它们是两个不同的流。因此输出的顺序可能会有点混乱。
printf
只有在可以检测到引用交互式设备时才会自动用新行刷新。我不确定这里是什么情况,但是您可以尝试在 printf
命令行之后使用 fflush(stdout);
显式刷新。